Taschenrechner mit funktion



  • Hi! kann mir jemand helfen, hab schon zwei tage da dran gesesen und komm nicht weiter, was mach ich falsch.

    danke!

    #include <iostream.h>
    double rechne(double zahl1, double zahl2){

    char op;
    cin>>op;

    switch(op)
    {
    case '+':
    cout<< "Das Ergebnis der Addition lautet:"<<zahl1+zahl2<<endl;
    break;
    case '-':
    cout<< "Das Ergebnis der Subtraktion lautet:"<<zahl1-zahl2<<endl;
    break;
    case '':
    cout<< "Das Ergebnis der Multiplikation lautet:"<<zahl1
    zahl2<<endl;
    break;
    case '/':
    cout<< "Das Ergebnis der Division lautet:"<<zahl1/zahl2<<endl;
    break;
    }
    return ;
    }
    void main(){
    int a, b;

    cout << "Gib 1 Zahl ein";
    cin>>a;
    cout <<"Gib 2 Zahl ein";
    cin >>b;
    cout<<"Gib denn Rechenoperator ein";

    cout <<rechne(a,b)<<endl;

    char p[50];
    cin.getline(p,50);
    cin.getline(p,50);

    }



  • sanja schrieb:

    Hi! kann mir jemand helfen, hab schon zwei tage da dran gesesen und komm nicht weiter, was mach ich falsch.

    danke!

    #include <iostream.h>
    double rechne(double zahl1, double zahl2){

    char op;
    cin>>op;

    switch(op)
    {
    case '+':
    cout<< "Das Ergebnis der Addition lautet:"<<zahl1+zahl2<<endl;
    break;
    case '-':
    cout<< "Das Ergebnis der Subtraktion lautet:"<<zahl1-zahl2<<endl;
    break;
    case '':
    cout<< "Das Ergebnis der Multiplikation lautet:"<<zahl1
    zahl2<<endl;
    break;
    case '/':
    cout<< "Das Ergebnis der Division lautet:"<<zahl1/zahl2<<endl;
    break;
    }
    return op;
    }
    void main(){
    int a, b;

    cout << "Gib 1 Zahl ein";
    cin>>a;
    cout <<"Gib 2 Zahl ein";
    cin >>b;
    cout<<"Gib denn Rechenoperator ein";

    cout <<rechne(a,b)<<endl;

    char p[50];
    cin.getline(p,50);
    cin.getline(p,50);

    }



  • 2 fragen:

    1: wieso hast du deinen text nochmal gepostet? nimm bitte cpp tags
    2: was geht denn nicht?



  • BIN EBEN DUMM WAS DAGEGEN



  • sanja schrieb:

    BIN EBEN DUMM WAS DAGEGEN

    hätte ich nicht, wenn du mir wenigstens jetzt das problem erklärst?!

    #include <iostream.h>
    double rechne(double zahl1, double zahl2){
    
    char op;
    cin>>op;
    
    switch(op)
    {
    case '+':
    cout<< "Das Ergebnis der Addition lautet:"<<zahl1+zahl2<<endl;
    break;
    case '-':
    cout<< "Das Ergebnis der Subtraktion lautet:"<<zahl1-zahl2<<endl;
    break;
    case '*':
    cout<< "Das Ergebnis der Multiplikation lautet:"<<zahl1*zahl2<<endl;
    break;
    case '/':
    cout<< "Das Ergebnis der Division lautet:"<<zahl1/zahl2<<endl;
    break;
    }
    return op;
    }
    void main(){
    int a, b;
    
    cout << "Gib 1 Zahl ein";
    cin>>a;
    cout <<"Gib 2 Zahl ein";
    cin >>b;
    cout<<"Gib denn Rechenoperator ein";
    
    cout <<rechne(a,b)<<endl;
    
    char p[50];
    cin.getline(p,50);
    cin.getline(p,50);
    
    }
    

    [Edit] war mal so frei...

    und bei mir berechnet er aber richtig!
    bringt nur nach dem ergbnis eine 43

    du kannst imo das return op weglassen, da ja eh ein double zurückgegeben wird!
    da das ergebnis ja aber in der funktion schon ausgegeben wird, kannst gleich ein void draus machen!

    dann zeigt er auch die zahl am ende nicht mehr an!

    [Edit] lol
    und btw, eigentl sollte es wohl eh in ins c++ forum!



  • ja das mit der 43 wie bekomme ich es weg, die version mit void hab ich mit void hab ich schon, ich brauch die mit der funktion, was muß ich ändern damit es die 43 nicht anzeigt.



  • wie gesagt, das mit der 43 liegt an dem rückgabe wert der rechne() funktion!

    Die hier ein double zurückgibt!
    In der funktion am ende hast du

    return op
    

    stehen, das heißt die funktion gibt den ascii wert für den operator zurück!

    und in der main funktion wird dieser dann durch das

    cout<<rechne()
    

    dann angezeigt!

    Leicht verändert, sodass keine zahlen extra ausgegeben werden:

    void rechne(double zahl1, double zahl2){  //hier void, da du keinen rückgabewert brauchst weil....
    
    char op;
    cin>>op;
    
    switch(op)
    {
    case '+':
    cout<< "Das Ergebnis der Addition lautet:"<<zahl1+zahl2<<endl;    //...hier schon berechnet und ausgegeben wird
    break;
    case '-':
    cout<< "Das Ergebnis der Subtraktion lautet:"<<zahl1-zahl2<<endl;
    break;
    case '*':
    cout<< "Das Ergebnis der Multiplikation lautet:"<<zahl1*zahl2<<endl;
    break;
    case '/':
    cout<< "Das Ergebnis der Division lautet:"<<zahl1/zahl2<<endl;
    break;
    }
    
    }
    void main(){
    int a, b;
    
    cout << "Gib 1 Zahl ein";
    cin>>a;
    cout <<"Gib 2 Zahl ein";
    cin >>b;
    cout<<"Gib denn Rechenoperator ein";
    
    rechne(a,b);    //darum muss man die funktion hier auch nicht mehr extra bearbeiten
    
    char p[50];
    cin.getline(p,50);
    cin.getline(p,50);
    
    }
    

    [Edit]

    noch paar tipps:
    wir sind hier bei c++, daher kein iostrea.h sondern nur iostream und using namespace std!

    kein void main() sondern int main() und eben ein return 0!
    am ende das con.getline() ist mir rätselhaft, hast das nur drin damit das fenster sich nicht schließt? Wenn ja sind hier in der FAQ für die Konsole bessere möglichkeiten beschrieben!



  • ja hab geändert jetzt gibt er mir eine warnung aus,[C++ Warnung] rechner.cpp(22): W8070 Funktion sollte einen Wert zurückgeben.



  • wie gesagt, die funktion muss

    void rechne()
    

    und nicht

    double rechne()
    

    heißen!!

    und solltest du die main meinen, dann sollte das gerüst ungefähr so aussehen:

    int main()
    {
    
      return 0;
    }
    

    und nicht

    void main()
    {
    
    }
    


  • super hats geklapt, danke!


Anmelden zum Antworten