Kann Fehler nicht finden



  • Hallo an alle 🙂

    Habe vor kurzem angefangen die C-Programmierung zu erlernen. Bei meinem Buch sind auch Übungsaufgaben, welche man selbständig lösen muss. Anschliessend kann man die Lösung im Anhang überprüfen.
    Nun zu meinem Problem:

    Ich soll ein Programm schreiben, welches alle ungeraden Zahlen von 1 bis n addiert und die Summe auf dem Bildschirm ausgibt. Das Programm soll hierfür die for-Schleife verwenden und der Benutzer soll bei Programmstart den Wert für n eingeben können.

    Mein Quellcode hierfür sieht folgendermaßen aus:

    #include <stdio.h>
    
    main() {
        int x, zahl, summe=0;
        printf("\tA d d i t i o n s p r o g r a m m\n");
        printf("\nBitte n eingeben: ");
        scanf("%i", &zahl);
        for (x=1; x<=zahl; x=x+2)
            summe=summe+x;
        printf("\nDie Summe der ungeraden Zahlen betraegt: %i", &summe);
    }
    

    Die Lösung im Buch sieht so aus:

    #include <stdio.h>
    
    main() {
    	int n,x,summe=0;
    	printf("\nBitte geben Sie den Wert fuer n ein: ");
    	scanf("%i",&n);
    	for(x=1; x<=n; x=x+2)
    		summe=summe+x;
    	printf("\nDie Summe aller ungeraden Zahlen von ");
    	printf("1 bis %i ist %i \n",n,summe);
    }
    

    Die Lösung laut Buch funktnioniert einwandfrei, wohingegen mein Programm einen seltsamen Wert ausgibt (z.B. 22533). Trotz mehrmaligen Vergleichen und Modifizierungen, kann ich den Fehler nicht finden.

    Freue mich sehr auf eure Hilfe.



  • RobInTheHood schrieb:

    printf("\nDie Summe der ungeraden Zahlen betraegt: %i", &summe);
    

    Da liegt der Fehler. Durch &summe gibtst du die Addresse der Variablen aus, du willst aber den Wert, also musst du ganz normal die Variable angeben.



  • Oh je. Wie konnte ich das nur übersehen?! Nun ja, durch Fehlern lernt man 🙂 Und vielen Dank für deine schnelle Hilfe.



  • RobInTheHood schrieb:

    Oh je. Wie konnte ich das nur übersehen?!

    Du hast nur darauf geschaut, dass der Compiler/Linker erfolgreich durchläuft.

    Du hast dabei aber nicht auf die Compiler-Warnungen geachtet,
    bzw. den Warnlevel zu niedrig eingestellt.



  • RobInTheHood schrieb:

    summe=summe+x;
    

    Ist ok, C bietet für sowas eine alternative schreibweise:

    summe += x;
    

Anmelden zum Antworten