2016-07-06 6 views
1

Ich brauche Hilfe herauszufinden, wo mein Code falsch gelaufen ist. Ich möchte die Werte für die Schleife zurücksetzen, so dass es nicht kompiliert wird, da meine Ausgabe im Moment aktuelle Eingabewerte in der aktuellen Berechnung verwendet, während ich möchte, dass die Ausgabe jedes Mal anders ist, als ob es die erste Zeit ist, den Code auszuführen. Der Code funktioniert gut, wenn ich die while-Schleife nicht verwende, aber dann muss ich das Programm jedes Mal erneut ausführen. Ich möchte, dass die Ausgabe jedes Mal eine neue Eingabe anfordert, aber keine Eingaben der Vergangenheit in den neuen Berechnungen verwendet. Ich weiß, ich erkläre es nicht sehr gut, aber ich bin irgendwie verloren. Alles hilft!Wie setze ich Werte in for-Schleife zurück?

Das ist mein Problem:

ein ungefährer Wert von pi der Reihe berechnet werden kann unter Verwendung von unten angegeben:

pi = 4 · [1 - 1/3 + 1/5 - 1/7 + 1/9 ... + (-1^n)/(2n + 1)]

Schreiben Sie ein C++ - Programm, um den ungefähren Wert von pi mit dieser Serie zu berechnen. Das Programm nimmt einen Eingang n, der die Zahl von Termen in der Approximation des Wertes von pi bestimmt und gibt die Approximation aus. Fügen Sie eine Schleife ein, die es dem Benutzer ermöglicht, diese Berechnung für neue Werte zu wiederholen, bis der Benutzer sagt, dass er oder sie das Programm beenden möchte.

#include <cstdio> 
#include <iostream> 

using namespace std; 

int main() 
{ 
    int n; 
    double sum=0; 

    cout << "Enter the number of terms to approximate (or zero to quit):\n"; 
    cin >> n; 

    if (n == 0) 
    { 
    return 0; 
    } 

    while (n != 0) 
    { 
    { for(int i=0;i<n;i++) 
     { 
     if (i%2==0) 
      { 
      sum += 1.0/(2*i+1); 
      } 
     else 
      { 
      sum += -1.0/(2*i+1); 
      } 
     } 

    cout.setf(ios::showpoint); 
    cout.precision(3); 
    cout << "The approximation is " << sum*4 << " using " << n << " terms." << endl; 
    } 
    cout << "Enter the number of terms to approximate (or zero to quit):\n"; 
    cin >> n; 
    } 

return 0; 
} 

Das ist mein Ausgang:

Dies ist, was die Ausgabe sein sollte:

Antwort

1

Sie setzen nicht sum vor dem Betreten der for Schleife . Einfach hinzufügen

sum=0; 

vor der for Linie.

0

Beachten Sie, dass 2.67 = 6.67 - 4.00.

Sie möchten, dass Ihr Programm einen sum für mehrere Werte von n berechnet. Die Summe muss zu Beginn jeder Berechnung innerhalb der while Schleife auf 0 initialisiert werden.

Eigentlich sollte es sogar dort deklariert werden.

0

C++ ist es nicht erforderlich Variablen zu Beginn einer Funktion zu definieren, so ist es vollkommen legal zu schreiben:

while (n != 0) 
{ 
    double sum = 0.0; 

dies Ihr Problem lösen würde. Alternativ, wenn Sie die Deklaration der Summe oben in der Funktion behalten möchten, ändern Sie einfach Ihren Code zu

while (n != 0) 
{ 
    sum = 0.0; 
Verwandte Themen