probleme mit taschenrechner



  • ich habe versucht einen kleinen taschenrechner zu schreiben und bekomme immer massig fehlermeldungen.

    könnt ihr mir sagen was da alles falsch ist?

    #include <stdio.h>
    #include <math.h>
    
    void main(void)
    
    flaut wahl, x, y, z;
    {
    
    	printf("****************\n*Taschenrechner*\n****************\n");
    	printf("Was möchtest du tun?\n1 Addition\2 Subtraktion\3 Multiplikation\n4 Division");
    	scanf("%g",&wahl);
    
    if (wahl==1) 	/*addition*/
    	{
    	printf("Gib bitte den 1. Wert ein.\n");
    	scanf("%g",&x);
    	printf("Gib bitte den 2. Wert ein.\n");
    	scanf("%g",&y);
    z= x + y;
    	printf("Ergebniss:%g",&z);
    }
    
    else if (wahl==2)	/*subraktion*/
    {
    	printf("Gib bitte den 1. Wert ein.\n");
    	scanf("%g",&x);
    	printf("Gib bitte den 2. Wert ein.\n");
    	scanf("%g",&y);
    z= x - y;
    	printf("Ergebniss:%g\n",&z);
    }
    
    else if (wahl==3)	/*multiplikation*/
    {
    	printf("Gib bitte den 1. Wert ein.\n");
    	scanf("%g",&x);
    	printf("Gib bitte den 2. Wert ein.\n");
    	scanf("%g",&y);
    z= x * y;
    	printf("Ergebniss:%g\n",&z);
    }
    
    else if (wahl==4)	/*division*/
    {
    	printf("Gib bitte den 1. Wert ein.\n");
    	scanf("%g",&x);
    	printf("Gib bitte den 2. Wert ein.\n");
    	scanf("%g",&y);
    z= x / y;
    	printf("Ergebniss:%g\n",&z);
    }
    


  • heute ist der Taschenrechner-Tag
    flaut wahl, x, y, z; *ultra-rofl* du meinst wohl float



  • Hallo,

    ja:

    1. Es heisst nicht void main(), sondern int main()...
    2. flaut = float 🙂
    3. Die Zeile flaut wahl, x, y, z; (bzw. float wahl, x, y, z;) darf erst nach der ersten { stehen...
    4. Die letzte Zeile des Programms muss return 0 lauten (aber noch vor Punkt 5)...
    5. Am Ende des Programms noch eine } einfügen...



  • Ich hab das Programm mal getestet, wie es hier oben steht und ich bekomme als Ergebnis nur +NAN.
    Zuerst weiß ich nicht mal, was für ein Fehler das ist un zweitens warum ist das so ?



  • Hallo,

    NAN heisst eigentlich Not a number. Und ja, du hast Recht, das Dingen funktioniert nicht.

    printf("Ergebniss:%g\n",&z);  // falsch
    printf("Ergebniss:%g\n",z);  // richtig
    

    Es werden die Adressen ausgegebn, aber nicht die Werte. Du musst einfach den Adressoperator & weglassen.



  • Kann man vielleicht durch Änderung der Variablen vielleicht was erwirken... das teste ich am besten jetzt mal !



  • void main() ???????? 😕 😕

    Das ist ANSI C Forum, bitte dann int main benutzen!



  • @supertux:
    Deinen letzten Beitrag verstehe ich nicht, schon gar nicht in Zusammenhang mit der zitierten Aussagen. Außerdem waren wir über die Problematik schon längst hinaus.



  • @CarstenJ: Ich hab einen Fehler gemacht, ich muss auf Zitat geklickt haben ohne zu merken. Ich wollte nur wegen void main lästern



  • ich habe mal alle sachen geändert die ihr gesagt habt und es funktioniert immer noch nicht



  • ok. mein programm funktioniert jetzt. habe die restlichen fehler noch selbst herausgefunden.

    edit: mist, es kommt immer -1 raus



  • bei meinem programm kommt immer als ergebnis

    -1.#QNAN

    weiß jemand was dass bedeutet?

    hier mein jetziger code
    [/cpp]nclude <stdio.h>
    #include <math.h>

    int main()

    {
    double wahl, x, y, z, rest;
    printf("\n*Taschenrechner*\n\n");
    printf("Was moechtest du tun?\nZum Auswaehlen einfach die passende nummer wählen.\n 1. Addition\n 2. Subtraktion\n 3. Multiplikation\n 4. Division\n\n ");
    scanf("%g",&wahl);

    if (wahl==1) /*addition*/
    {
    printf("Gib bitte den 1. Wert ein.\n");
    scanf("%g",&x);
    printf("Gib bitte den 2. Wert ein.\n");
    scanf("%g",&y);
    z= x + y;
    printf("Ergebniss:%g",z);
    scanf("%g",&rest);
    }

    else if (wahl==2) /*subraktion*/
    {
    printf("Gib bitte den 1. Wert ein.\n");
    scanf("%g",&x);
    printf("Gib bitte den 2. Wert ein.\n");
    scanf("%g",&y);
    z= x - y;
    printf("Ergebniss:%g\n",z);
    scanf("%g",&rest);
    }

    else if (wahl==3) /*multiplikation*/
    {
    printf("Gib bitte den 1. Wert ein.\n");
    scanf("%g",&x);
    printf("Gib bitte den 2. Wert ein.\n");
    scanf("%g",&y);
    z= x * y;
    printf("Ergebniss:%g\n",z);
    scanf("%g",&rest);
    }

    else if (wahl==4) /*division*/
    {
    printf("Gib bitte den 1. Wert ein.\n");
    scanf("%g",&x);
    printf("Gib bitte den 2. Wert ein.\n");
    scanf("%g",&y);
    z= (x / y);

    printf("Ergebniss:%g\n",z);
    scanf("%g",&rest);
    }
    return 0;
    }

    [cpp]



  • kann mir niemand helfen?



  • Question:

    Warum Liest du den "rest" ein?

    Warum verwendest du %g ?
    (Ich verwende bei double %f)



  • Ich kann leider zum Problem nix beitragen aber ein Kommentar hätte ich noch: Wenn ihr euren Code einrückt, nimmt die Lesbarkeit erheblich zu und man sieht die Fehler viel viel schneller.



  • Wenn ihr euren Code einrückt, nimmt die Lesbarkeit erheblich zu und man sieht die Fehler viel viel schneller.

    Soetwas... das wäre mir nie eingefallen... aber nochwas...
    es giebt sogar eine eigene Schaltfläche "C/C++". 😃



  • und wie du sicher siehst...
    hat er versucht, es korrekt anzuzeigen, aber...

    schau in seiner Nachricht nach... er hat [cpp] ganz am Ende doch geschrieben!



  • chille07 schrieb:

    und wie du sicher siehst...
    hat er versucht, es korrekt anzuzeigen, aber...

    schau in seiner Nachricht nach... er hat [cpp] ganz am Ende doch geschrieben!

    Er hat zuerst das CPP Tag geschlossen und dann es geöffnet.



  • wenigstens hat ers versucht...
    und dann hilft ihm dein Ratschlag auch nicht weiter...
    (einrücken)



  • so, ich habe double mal gegen int eingetauscht. jetzt funktioniert es. 💡

    PS:mein code ist normalerweise eingerückt. ist nur scheinbar duch dass kopieren irgendwie abhanden gekommen. 👍


Anmelden zum Antworten