2016-07-01 3 views
1
#include <iostream> 
using namespace std; 


int arr[100] = {}; 
int terms; 
int maxterms; 
int sum = 0; 

int main() { 
    cout << "How many terms would you like to add?" << endl; 

    cin >> terms; 

    terms = maxterms; 

    for (int x = terms; x >= 0; x--) { 
     cout << "Number " << (((maxterms)-x) + 1) << ": "; 
     cin >> arr[(maxterms - x)]; 
     cout << endl; 
    } 

    for (int x = 0; x < maxterms; x++) { 
     sum += arr[x]; 
    } 

    cout << "Your sum is: " << sum; 

    return 0; 
} 

Dieses einfache Programm druckt immer Summe als Null ist, und fordert nur einmal Benutzereingabe. Wie kann dieser Code verbessert werden, so dass er in aufeinanderfolgende Indizes des Arrays schreibt und dann die Summe von ihnen zurückgibt?Schreiben in und Lesen aus einem Array mit For-Schleifen und User Input

+0

@SilentMonk Ich habe nicht gesehen, dass dies globale waren, also ist dies natürlich nicht UB, Ihre Antwort ist die richtige. – Holt

+0

@Holt, danke für die Klarstellung. – SilentMonk

Antwort

1

maxterms wird auf 0 initialisiert, da es sich um eine globale Variable handelt. Sie sind Gleichung terms = maxterms, in der Sie die Benutzereingabe auf 0 überschreiben.

So for (int x = 0; x < maxterms; x++) läuft überhaupt nicht. Daher ist sum immer 0. Dasselbe gilt für die Schleife, bei der die Anzahl der Benutzereingaben gefragt wird.

Auch die Schleife, in der Sie den Benutzer zur Eingabe auffordern, läuft für terms+1 mal.

0

Wie @SilentMonk festgestellt, x = maxterms, und so die Schleife beendet.

Sie können die Schleife neu zu gestalten, wie so:

for (int x = maxterms; x >= 0; x--) 
{ 
    sum += arr[x]; 
} 

Hier x beginnt mit seinem Wert gleich maxterms, und nimmt ab, bis ihr Wert 0, und der Wert von arr[x] wird sum jeder Iteration hinzugefügt.

+0

Ich wünschte, ich hätte zwei Leute als die richtige Antwort überprüfen können, weil Ihre Fortsetzung auch außerordentlich hilfreich war. – jmantela

+0

Vielen Dank für Ihre Anerkennung. Hoffen wir, dass der Code ohne Fehler kompiliert wird. –

-1

ich Ihren Code nur überprüft, und ich diesen Punkt gefunden an dieser Linie suchen,

Begriffe = maxterms;

Dies überschreibt die Eingabe des Benutzers mit einem zufälligen Wert, da Sie maxterms nicht initialisieren.

Ich glaube, Sie wollten eine Benutzereingabe kopieren maxterms so wie dies tun:

maxterms = Begriffe;

ändern Sie dies und versuchen Sie es.

Verwandte Themen