Problem mit einer Funktion



  • Hallo, wieso gibt mir diese Funktion immer nur eine 1 aus ?
    Was mach ich da falsch?

    #include <iostream>
    using namespace std;
    
    int start(int a,int b) ;
    
    int main()
    {
    
    int zahl_1, zahl_2;
    int zahl_erg;
    
    start ( zahl_1 , zahl_2 );   // zahl_1 wird zu a   zahl_2 wird zu b
    
    cout<<zahl_erg;   //zahl_erg wird zu ergebniss
    
    system("PAUSE");
    }
    
            int start(int a, int b)
            {
            int ergebniss;
    
            cout<<"Eingabe 1: ";
            cin>>a;
    
            cout<<"Eingabe 2: ";
            cin>>b;
    
             ergebniss = a+b;
    
             return ergebniss;
            }
    


  • Es ist nicht gerade Sinnvoll was du da machst. Du übergibst deiner Funktion irgendwelche Werte die in der Main nirgends "gesetzt" werden. Überschreibst diese dann aber in deiner Funktion durch deine Eingabe wieder. Wie wäre es wenn du einfach die Parameter weglässt und deine Variablen a und b IN der Funktion deklarierst. Dann geht das auch was du da machen willst.



  • Dazu kommt noch, dass du den Rückgabewert deiner Funktion gar nicht zuweist! Du deklarierst eine Variable zahl_erg, die aber nie einen Wert bekommt und folglich einen undefinierten Inhalt hat, und gibst diese dann aus.



  • funktion schrieb:

    Hallo, wieso gibt mir diese Funktion immer nur eine 1 aus ?
    Was mach ich da falsch?

    ;
    
    int main()
    {
    /***/
    zahl_erg=start ( zahl_1 , zahl_2 );   // zahl_1 wird zu a   zahl_2 wird zu b
    }
    /***/
    

    Edit: Du musst schon irgendwo zahl_erg definieren. Du hast vergessen den Rückgabewert deiner funktion an ergebnis zu übergeben.



  • Probier es doch einfach mal so:

    #include <iostream>
    using namespace std;
    
    int start() ;
    
    int main()
    {
    
    int zahl_erg;
    
    zahl_erg = start ();   // zahl_1 wird zu a   zahl_2 wird zu b
    
    cout<<zahl_erg;   //zahl_erg wird zu ergebniss
    
    system("PAUSE");
    }
    
    int start()
    {
      int a;
      int b;
    
      cout<<"Eingabe 1: ";
      cin>>a;
      cout<<"Eingabe 2: ";
      cin>>b;  
    
      return a+b;
    }
    


  • Und bedenke Firefighters Ratschlag.
    Die zahl_1 und zahl_2 in der main brauchst du garnicht! Die müssen auch deiner funktion garnicht übergeben werden!

    Edit: Firefighter ist aber auch immer ein paar sekunden schneller.

    Aber das: int ergebniss; in der funktion kann man sich auch sparen. Und wenn dann mit einem s.



  • Wobei mein Ratschlag natürlich eine, der vielen Lösungen zu deinem Problem waren. Jedoch musst du dran denken, wenn du, wie du es am Anfang hattest deine Eingaben nur in der Funktion machst, was wäre dann wenn du die eingegeben Werte irgendwo im Programmablauf nochmal brauchst? Wäre von daher zu überlegen ob du die Werte nicht lieber in der Main einliest und sie an die Funktion übergibst. Natürlich ist es so wie ich es gepostet habe auch möglich, aber halt nicht schön, ich wollte dir nur zeigen wie dein Problem zu lösen wäre.

    Edit: 😛 Ja da war ich ein paar sec schneller, und Natürlich das kann man sich das auch sparen 🙂 Habe es rauseditiert.



  • Firefighter schrieb:

    Wäre von daher zu überlegen ob du die Werte nicht lieber in der Main einliest und sie an die Funktion übergibst.

    Jo, das macht Sinn. Vermutlich noch eine extra Funktion Eingabe()...

    @funktion: Du solltest Dir auch Gedanken über sinnvolle Namnsvergebung machen.

    int start(int a, int b);    // Was wird hier gestartet?
    
    int addiere(int a, int b);  // aussagekräftiger
    


  • ty all hat funktioniert.


Log in to reply