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 und result? Du brauchst doch nur die summe (oder result) und die aktuelle Eingabe numberadd. Wofür hast du drei Variablen? Wofür ist im number 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 "" beim printf) 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

    1. immer initialisieren, wenn möglich
    2. 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?


Log in to reply