C Programmierung While-Schleife, Eingaben summieren
-
"Schreiben Sie eine Anwendung, die die Eingaben solange summiert, bis der Anwender
eine 0 eingibt." Ich muss hier eine While-Schleife verwenden, aber kriege es an sich nicht wirklich hin. Will nämlich auch das die Zahlen beim "printf" [printf("%d+%d ist gleich %d.\n" ,number ,numberadd ,result);], auch richtig angezeigt werden.#include <stdio.h> #include <stdlib.h> int main() { int number=0; int numberadd; int result; printf("In diesem Programm wird Ihre Eingabe solange summiert, bis Sie eine Null eingeben\n"); while(numberadd!=0) { printf("\nBitte eine Zahl eingeben: "); scanf("%d", &numberadd); result=numberadd+number; printf("%d+%d ist gleich %d.\n" ,number ,numberadd ,result); number=result-numberadd; } system("PAUSE"); return 0; }
-
@Kibo sagte in C Programmierung While-Schleife, Eingaben summieren:
int numberadd;
int result;printf("In diesem Programm wird Ihre Eingabe solange summiert, bis Sie eine Null eingeben\n");
while(numberadd!=0)Beantworte dir mal folgende Frage: Wenn dein Programm zum ersten Mal an diese Stelle kommt, welchen Wert hat dann
numberadd
?Zusätzlich: was tun deine drei Variablen
number
,numberadd
undresult
? Du brauchst doch nur diesumme
(oderresult
) und die aktuelle Eingabenumberadd
. Wofür hast du drei Variablen? Wofür ist imnumber
da? Warum subtrahierst du etwas (Zeile 16), wenn du aufsummieren willst?
-
@wob Ich habe 3 Variablen, weil ich das hier: printf("%d+%d ist gleich %d.\n" ,number ,numberadd ,result);
mit allen Zahlen ausgeben will und ich weiß nicht wie ich das sonst machen soll
-
@Kibo sagte in C Programmierung While-Schleife, Eingaben summieren:
Ich muss hier eine While-Schleife verwenden
Warum?
-
@DirkB Mache das für die Schule und das ist ein Vorgabe vom Lehrer
-
@Kibo sagte in C Programmierung While-Schleife, Eingaben summieren:
kriege es an sich nicht wirklich hin
heisst?
-
@Kibo sagte in C Programmierung While-Schleife, Eingaben summieren:
mit allen Zahlen ausgeben will und ich weiß nicht wie ich das sonst machen soll
weißt du, was das
\n
im Formatstring (der Text mit den %d zwischen den "" beimprintf
) macht?
-
@wob sagte in C Programmierung While-Schleife, Eingaben summieren:
Beantworte dir mal folgende Frage: Wenn dein Programm zum ersten Mal an diese Stelle kommt, welchen Wert hat dann numberadd?
Bitte mach das!
Ansonsten:
#include <stdio.h> int main() { int result = 0; printf("In diesem Programm wird Ihre Eingabe solange summiert, bis Sie eine Null eingeben\n"); while (1) { printf("\nBitte eine Zahl eingeben: "); int numberadd; if (1 != scanf("%d", &numberadd) || numberadd == 0) break; int new_result = result + numberadd; printf("%d+%d ist gleich %d.\n", result, numberadd, new_result); result = new_result; } // system("PAUSE"); return 0; }
-
@wob Danke habe es durch deine Idee hinbekommen! Mein Programm sieht wie folgt aus und funktioniert so wie ich es will
#include <stdio.h> #include <stdlib.h> int main() { int number; int numberadd; int result; printf("In diesem Programm wird Ihre Eingabe solange summiert, bis Sie eine Null eingeben\n"); while(numberadd!=0) { printf("\nBitte eine Zahl eingeben: "); scanf("%d", &numberadd); result=number+numberadd; printf("%d + %d ist gleich %d.\n" ,number ,numberadd ,result); number=result; } system("PAUSE"); return 0; }
-
Nein, dein Programm hat undefiniertes Verhalten.
Ich wiederhole die Frage, die ich schon 2x gestellt habe, gerne auch nochmal.
Beantworte dir mal folgende Frage: Wenn dein Programm zum ersten Mal an diese Stelle kommt, welchen Wert hat dann numberadd? (bezieht sich in deinem neuen Programm auf Zeile 10)
Analog in Zeile 14: Welchen Wert hat "number" dort beim ersten Mal?
Rat: Variablen
- immer initialisieren, wenn möglich
- den Geltungsbereich möglichst klein wählen
Weiter: scanf-Rückgabewert immer testen. Und soll, wenn du 0 eingibst, wirklich nochmal eine Summe mit 0 gebildet werden?