Frage zu Funktionen



  • Ich hätte da mal eine Frage zu Funktionen. Ich habe folgendes Programm geschrieben:

    #include<stdio.h>
    #include<stdlib.h>                           //Bindet alle Bibliotheken mit ein
    
    int scrubs(int wert1, int wert2){                         
        printf("Bitte geben sie eine Zahl ein: ");
        scanf("%i", &wert1);
        printf("Bitte geben sie eine Zahl ein: ");
        scanf("%i", &wert2);
    }
    
    int addieren(int wert1, int wert2){           //Diese Funktionion Addiert später die Zahlen
        int ergebnis;
        ergebnis = wert1+wert2;
    }
    
    int minus(int wert1, int wert2){             //subtrahiert das Ergebnis
        int ergebnis;
        ergebnis = wert1-wert2;
    }
    
    int mal(int wert1, int wert2){               //Multipliziert das Ergebnis
        int ergebnis;
        ergebnis = wert1*wert2;
    }
    
    int durch(int wert1, int wert2){             //Dividiert das Ergebnis
        int ergebnis;
        ergebnis = wert1/wert2;
    }
    
    int main(){
           int wert1, wert2, ergebnis, wahl;     //Deklariert die Variablen mit dem Typ Integer
           printf("\t\n\nM a t h e p r o g r a m m\n");           //Das ist das Menü
           printf("1. Addieren\n");
           printf("2. Subtrahieren\n");
           printf("3. Multiplizieren\n");
           printf("4. Dividiern\n");
           printf("0. Das Programm beenden\n\n\n");
           scanf("%i", &wahl);
    
           while(0){
           if(wahl == 1){
                   scrubs(wert1, wert2);
                   addieren(wert1, wert2);
                   }
    
           if(wahl == 2){
                   scrubs(wert1, wert2);
                   minus(wert1, wert2);
                   }
    
           if(wahl == 3){
                   scrubs(wert1, wert2);
                   mal(wert1, wert2);
                   }
    
           if(wahl == 4){
                   scrubs(wert1, wert2);
                   durch(wert1, wert2);
                   }
           else{
                printf("Die Zahl war nicht die Eingegebene");
                }
           }
    
           printf("Das Ergbebnis ist %i: ", ergebnis);
    
           system("PAUSE");
           return 0;
           }
    

    Und zwar wird der Wert der addierten, subtrahierten, dividierten oder multiplizeriten Zahlen in der Variable ergebnis gespeichert. Wie kann ich diesen Wert aus der Funktion rauslesen?????

    danke im voraus 😃



  • Ich habe auch shcon folgendes versucht, aber leider kommmt da auch ein zufälliger Wert raus kann mir jemand die Lösung geben?????

    #include<stdio.h>
    #include<stdlib.h>                           //Bindet alle Bibliotheken mit ein
    
    int scrubs(int wert1, int wert2){                         
        printf("Bitte geben sie eine Zahl ein: ");
        scanf("%i", &wert1);
        printf("Bitte geben sie eine Zahl ein: ");
        scanf("%i", &wert2);
    }
    
    int addieren(int wert1, int wert2){           //Diese Funktionion Addiert später die Zahlen
        int ergebnis;
        ergebnis = wert1+wert2;
        printf("Das Ergebnis ist %i", ergebnis);
    }
    
    int minus(int wert1, int wert2){             //subtrahiert das Ergebnis
        int ergebnis;
        ergebnis = wert1-wert2;
        printf("Das Ergebnis ist %i", ergebnis);
    }
    
    int mal(int wert1, int wert2){               //Multipliziert das Ergebnis
        int ergebnis;
        ergebnis = wert1*wert2;
        printf("Das Ergebnis ist %i", ergebnis);
    }
    
    int durch(int wert1, int wert2){             //Dividiert das Ergebnis
        int ergebnis;
        ergebnis = wert1/wert2;
        printf("Das Ergebnis ist %i", ergebnis);
    }
    
    int main(){
           int wert1, wert2, ergebnis, wahl;     //Deklariert die Variablen mit dem Typ Integer
           printf("\t\n\nM a t h e p r o g r a m m\n");           //Das ist das Menü
           printf("1. Addieren\n");
           printf("2. Subtrahieren\n");
           printf("3. Multiplizieren\n");
           printf("4. Dividiern\n");
           printf("0. Das Programm beenden\n\n\n");
           scanf("%i", &wahl);
    
           if(wahl == 1){
                   scrubs(wert1, wert2);
                   addieren(wert1, wert2);
                   }
    
           else if(wahl == 2){
                   scrubs(wert1, wert2);
                   minus(wert1, wert2);
                   }
    
           else if(wahl == 3){
                   scrubs(wert1, wert2);
                   mal(wert1, wert2);
                   }
    
           else if(wahl == 4){
                   scrubs(wert1, wert2);
                   durch(wert1, wert2);
                   }
           else{
                printf("Die Zahl war nicht die Eingegebene");
                }
           system("PAUSE");
           return 0;
           }
    


  • Mit

    return ergebnis;
    

    🙂
    Aber du bekommst deine Werte aus scrubs so nicht raus.

    int scrubs(int *wert1, int *wert2){                        
        printf("Bitte geben sie eine Zahl ein: ");
        scanf("%i", wert1);
        printf("Bitte geben sie eine Zahl ein: ");
        scanf("%i", wert2);
    }
    

    Der Aufruf sieht dann so aus:

    scrubs(&wert1, &wert2);
    


  • Hab ich noch übersehen:
    Das muss dann noch der Variablen ergebnis zugewiesen werden.

    ergebnis = addieren(wert1, wert2);
    

    natürlich auch für - * /



  • Vielen Dank. Aber eine Frage bleibt noch wenn ich ich doch ne pointer Variable Deklariere werden doch zwei Werte in einer Variable gespeichert oder???? Dann überspielt doch der eine Wert den anderen oder????



  • guck doch mal hier, da hab ich euch taschenrechnerbauern mal ein kleines alternativ beispiel gegeben 😉



  • Funktionen schrieb:

    Vielen Dank. Aber eine Frage bleibt noch wenn ich ich doch ne pointer Variable Deklariere werden doch zwei Werte in einer Variable gespeichert oder???? Dann überspielt doch der eine Wert den anderen oder????

    Welche zwei Werte sollen das den sein?
    Du hast einen Pointer auf wert1 und einen auf wert2.
    Die Variablen die in einer Funktion deklariert sind haben mit anderen Variablen außerhalb der Funktion (auch mit gleichem Namen) nichts zu tun.

    Du kannst es auch so schreiben, dann erkennst du am Variablennamen das es sich um Pointer handelt.

    int scrubs(int *pwert1, int *pwert2){                        
        printf("Bitte geben sie eine Zahl ein: ");
        scanf("%i", pwert1);
        printf("Bitte geben sie eine Zahl ein: ");
        scanf("%i", pwert2);
    }
    

    Am Rest des Programms musst du aber nichts ändern. Wichtig ist nur, dass die übergebenen Parameter vom gleichen Typ sind.


Log in to reply