Zahlen addieren durch Funktion



  • Du machst überhaupt keine Rechnung. Deine Funktion summe() müsste eigentlich 2 Paremter bekommen : int a und int b also : summe( int a, int b ) denn nur so kann sie wissen, aus welchen 2 Zahlen sie die Summe bilden soll. Aussehen würde das dann so :

    int summe( int a, int b ) {
    return ( a+b );
    }
    
    int main() {
    // Zahlen einlesen
    
    printf( " Summe ist : %d \n", summe( zahl1, zahl2 ) );
    return 0;
    
    }
    


  • Hier mal ein Link:
    http://www.cplusplus.com/reference/clibrary/cstdio/scanf/

    schau mal bei dir wie es da aussieht.

    Die anderen Sachen wurden ja schon angesprochen.

    void summe()
    {
        printf("\nDas Ergebnis lautet: "%i", zahl1 + "%i", zahl2"); // siehe Beitrag vorher
    }
    
    void main()  // wieso void ???
    {
        int zahl1;
        int zahl2;
    
        printf("\nBitte erste Zahl eingeben: ");
        scanf("%i", zahl1);  // schau in den Link
    
        printf("\nBitte zweite Zahl eingeben: ");
        scanf("%i", zahl2);  // auch Link
    
        summe();
    
        getchar();
        return 0;
    }
    


  • Schau mehr her, so sollte es funktionieren:

    #include <stdio.h>
    
    int zahl1; 
    int zahl2;
    
    void summe() 
    { 
        printf("\nDas Ergebnis lautet: %i", zahl1 + zahl2); 
    } 
    
    int main() 
    { 
        printf("\nBitte erste Zahl eingeben: "); 
        scanf("%i", &zahl1); 
    
        printf("\nBitte zweite Zahl eingeben: "); 
        scanf("%i", &zahl2); 
    
        summe(); 
    
        getchar(); 
        return 0; 
    }
    

    Gruß Chris



  • Funktionieren wahrscheinlich ja - aber warum globale Variablen, wenn es einfach anders geht?



  • Ich wollte so nahe an seinem Originalcode bleiben wie es geht. Du hast aber Recht, eine Summenfunktion mit Argumenten wäre hier als Lösung sauberer gewesen.

    EDIT: hier noch mal die saubere Lösung...

    #include <stdio.h>
    
    void summe(int zahl1, int zahl2) 
    { 
        printf("\nDas Ergebnis lautet: %i", zahl1 + zahl2); 
    } 
    
    int main() 
    { 
        int zahl1, zahl2;
    
        printf("\nBitte erste Zahl eingeben: "); 
        scanf("%i", &zahl1); 
    
        printf("\nBitte zweite Zahl eingeben: "); 
        scanf("%i", &zahl2); 
    
        summe(zahl1, zahl2); 
    
        getchar(); 
        return 0; 
    }
    


  • cfoobar schrieb:

    Ich wollte so nahe an seinem Originalcode bleiben wie es geht. Du hast aber Recht, eine Summenfunktion mit Argumenten wäre hier als Lösung sauberer gewesen.

    EDIT: hier noch mal die saubere Lösung...

    Sauber? Nö!
    Ein/Ausgabe und Funktionen trennen, also int summe(int a, int b) mit returnvalue wär' angesagt.



  • Ok ok, das wär dann schon klinisch sauber... 😃

    EDIT:...und dann könnte man noch die Eingaben prüfen und sichere Varianten von printf etc. verwenden wie vsnprintf_s und so weiter und so fort... :p



  • cfoobar schrieb:

    vsnprintf_s

    Ist kein standard C :p



  • cooky451 schrieb:

    cfoobar schrieb:

    vsnprintf_s

    Ist kein standard C :p

    Warum hatte ich das geahnt? 😃



  • pointercrash() schrieb:

    cfoobar schrieb:

    Ich wollte so nahe an seinem Originalcode bleiben wie es geht. Du hast aber Recht, eine Summenfunktion mit Argumenten wäre hier als Lösung sauberer gewesen.

    EDIT: hier noch mal die saubere Lösung...

    Sauber? Nö!
    Ein/Ausgabe und Funktionen trennen, also int summe(int a, int b) mit returnvalue wär' angesagt.

    Richtig, dann wären wir bei meinem Code und müssten das ganze nicht nochmal 5-fach reposten.


Anmelden zum Antworten