Startfehler



  • haha 😃 nein, werd ich schon nicht 🙂 aber fragen kostet ja nix 😛 bemühe mich trotzdem immer, die Lösung vorher zu finden und zu verstehen.



  • Ich hoffe Dir ist klar, dass du hier spätestens wieder schreibst, wenn Du die Division in Deinen Taschenrechner integrieren willst.

    Deine Ergebnisvariable kann nur mit Ganzzahlen umgehen und ab und ab kommt bei einer Division auch schon mal eine Kommazahl heraus...



  • jo das weiß ich. wollte es aber nur erstmal so für den anfang probieren. habs aber auch rausbekommen 😛

    Mal ne Frage...
    ich möchte meinem programm sagen, dass es nun 4 möglichkeiten gibt, wie man weiterfahren könnnte. Drücken sie die 1, 2, 3, 4.
    wenn man die 1 drückt, soll die summe zweier zahlen ausgegeben werden, die man zuvor eingegeben hat, wenn man die 2 drückt soll die differenz ausgegeben werden, bei der 3 der quotient und bei der 4 das produkt. das macht man doch alles mit if-else anweisungen, oder?



  • Entweder if-else oder auf per switch-case.

    (und ich würde die Ein- und Ausgaben außerhalb dieses Entscheidungsblocks durchführen - damit vermeidest du redundanten Code)



  • okay, switch case hab ich mir dann schon fast gedacht, aber soweit bin ich noch nicht.

    ein- und ausgabe außerhalb dieses entscheidungsblocks? 😃 was meinste damit?

    redundanten code? 😃 okay

    Bis jetzt sieht mein Code so aus,

    EDIT#5:

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int main()
    {
        float zahl1, zahl2;
        float d1 = 1;
        float d2 = 2;
        float d3 = 3;
        float d4 = 4;
        float erg1, erg2;
    
        printf("Geben Sie einen Wert fuerr [Zahl1] ein: ");
        scanf("%d", &zahl1);
    
        printf("Geben Sie einen Wert fuerr [Zahl2] ein: ");
        scanf("%d", &zahl2);
    
        printf("\nWas moechten Sie als naechstes tun?\nDruecken Sie die [1] um die Summe auszurechnen.\nDruecken Sie die [2] um die Differenz auszurechnen.\nDruecken Sie die [3] um das Produkt auszurechnen.\nDruecken Sie die [4] um den Quotienten auszurechnen.\n");
        scanf("%f", &d1, &d2, &d3, &d4);
    
        /*Erster Ausdruck*/    
        if (d1 == 1) {
    
               printf("\nSumme: %2f\n", zahl1+zahl2);
    
        } /*Zweiter Ausdruck*/else {
    
             if (d2 == 2) {
               printf("\nDifferenz: %2f\n", zahl1-zahl2);
    
               }                           
                          } /*Beginn des dritten Ausdrucks*/else {
    
                                 if (d3 == 3) {
                                  prtintf("\nProdukt: %2f\n", zahl1*zahl2);
                                  }
    }
    
        system("PAUSE");
        return 0;
    }
    

    Es wird ein primärer Audruck vor dem else bei beginn des dritten Ausdrucks erwartet? oO



  • Holla, was machst du denn da?

    scanf("%f", &d1, &d2, &d3, &d4);
    

    Also, das was du da machst ist etwas kurios. Merke dir die Rechenoperation in NUR EINER Variablen. Dafür sollte ein int oder char reichen.

    Bei scanf wird nur eine zusätzliche Variablenadresse erwartet, wenn du einen "format specifier" angibst(%f). Die "format specifier" weiter oben, solltest vllt. auch nochmal überarbeiten;)

    Es fehlt noch eine Prüfung auf falsche Eingabe und die Einrückung ist auch ein wenig gewöhnungsbedürftig. Wie wärs mit einem:

    if(Variable==Vergleichswert1){
      //Fall1
    } else if(Variable==Vergleichswert2) {
      //Fall2
    } else {
      //Restfälle
    }
    

    das sieht ein wenig strukturierter aus. mit switch/case:

    switch(Variable) {
      case Vergleichswert1:
        //Fall1
        break;
      case Vergleichswert2:
        //Fall2
        break;
      default:
        //Restfälle
        break;
    }
    


  • das mit dem float und %f hab ich dann auch noch net getestet 😃 und hat auch irgendwie nicht funktioniert. hab das wieder bei int und %i gelassen. wie man die { und } einrückt weiß ich auch net oO aber danke 🙂

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int main()
    {
        int zahl1, zahl2;
        int d1 = 1;
        int d2 = 2;
        int d3 = 3;
        int d4 = 4;
        int erg1, erg2;
    
        printf("Geben Sie einen Wert fuerr [Zahl1] ein: ");
        scanf("%d", &zahl1);
    
        printf("Geben Sie einen Wert fuerr [Zahl2] ein: ");
        scanf("%d", &zahl2);
    
        printf("\nWas moechten Sie als naechstes tun?\nDruecken Sie die [1] um die Summe auszurechnen.\nDruecken Sie die [2] um die Differenz auszurechnen.\nDruecken Sie die [3] um das Produkt auszurechnen.\nDruecken Sie die [4] um den Quotienten auszurechnen.\n");
        scanf("%i", &d1, &d2, &d3, &d4);
    
        /*Erster Ausdruck*/    
        if (d1 == 1) {
           printf("\nSumme: %i\n", zahl1+zahl2);
        /*Zweiter Ausdruck*/          
        } else if (d2 == 2) {
           printf("\nDifferenz: %i\n", zahl1-zahl2);
        /*Dritter Ausdruck*/      
        } else (d3 == 3) ;{
           printf("\nProdukt: %i\n", zahl1*zahl2);
        /*Vierter Ausdruck*/
        } else (d4 == 4) ;{
           printf("\nQuotient: %i\n", zahl1/zahl2);                            
    
        system("PAUSE");
        return 0;
    }
    

    So hab ich das jetzt, funktionieren tut es net, aber hoffe, dass ich deine Vorschläge berücksicht habe, obwohl ich nicht ganz wusste, wie ich es besser machen sollte



  • Hmmm, jetzt mit einer Variablen, die das Rechenzeichen speich...
    Danke das ich heute auch noch Dejavúe-Erlebnis bekommen durfte:

    DaRe schrieb:

    Holla, was machst du denn da?

    scanf("%f", &d1, &d2, &d3, &d4);
    

    Also, das was du da machst ist etwas kurios. Merke dir die Rechenoperation in NUR EINER Variablen. Dafür sollte ein int oder char reichen.

    Edit:
    Überleg es dir schonmal logisch, dass das mit 4 Variablen total unsinnig sein sollte... ich hab auch keine 4 Geldbeutel dabei und bezahl mit dem einen im Discounter, dem anderen im Bekleidungsgeschäft, dann noch einen für den Elektronikladen und Restaurant ist dann nochmal ein Anderer. Ne andere Analogie krieg ich da jetzt auch nciht gesponnen.

    Wenn du jetzt immernoch keine Ahnung hast, dann musst du mal jemanden anderen Fragen. Ich kanns dir anders nicht mehr erklären 😉



  • DaRe schrieb:

    ...
    Danke das ich heute auch noch Dejavúe-Erlebnis bekommen durfte:
    ...
    Wenn du jetzt immernoch keine Ahnung hast, dann musst du mal jemanden anderen Fragen. Ich kanns dir anders nicht mehr erklären 😉

    Na jetzt bist ja auch du zur Erkenntnis gekommen, dass es offenkundig lernunwillige und/oder -unfähige Leute gibt, bei denen auch mehrfaches Hinweisen auf dieselben Fehler nichts hilft.
    Aber länger durchgehalten als andere hast du jedenfalls.



  • Joar, sowas hab ich auch nicht alle Tage... zumindest bis jetzt 😉



  • Ouh man, hab mir ma gerade was durchgelesen. das was ich versucht habe, wurde in dem beispiel viel besser erklärt und auch völlig anders dargestellt. -.-

    Maybe nochmal auf ein letztes: Ich hab mir ja jetzt was angeschaut, und eine andere Aufgabe so hinbekommen, leider aber nicht die folgende:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int zahl1, zahl2, Sum1, Diff1, pro1, quo1;
        int waehlen = 0;
    
        /*Zahlen eingeben*/
        printf("Taschenrechner 1.0\n\n");
        printf("Geben Sie einen Wert fuer [1] ein: ");
        scanf("%i", &zahl1);
        printf("Geben Sie einen Wert fuer [2] ein: ");
        scanf("%i", &zahl1);
    
        /*Aktion Auswählen*/
    
        printf("\n1: Um die Summe der beiden Zahlen auszurechnen druecken Sie die [1]: ");
        printf("\n2: Um die Differenz der beiden Zahlen auszurechnen druecken Sie die [2]: ");
        printf("\n3: Um das Produkt der beiden Zahlen auszurechnen druecken Sie die [3]: ");
        printf("\n4: Um den Quotienten der beiden Zahlen auszurechnen druecken Sie die [4]: ");
        printf("\n\nIhre Zahl lautet: ");
        scanf("%i", &waehlen);
    
        /*Rechnung festlegen*/ 
        float erg1 = 1;
        float erg2 = 2;
        float erg3 = 3;
        float erg4 = 4;
    
        switch(waehlen) {
                        case 1: erg1 = zahl1 + zahl2; break;
                        case 2: erg2 = zahl1 - zahl2; break;
                        case 3: erg3 = zahl1 * zahl2; break;
                        case 4: erg4 = zahl1 / zahl2; break;
                        }
    
         /*Ergebnis*/
         if (erg1 == 1) {
         printf("\nIhr Ergebnis lautet: %.2f");        
         }
         else (erg2 == 2) ;{
         printf("Ihr Ergebnis lautet: %.2f");
         }
         else if (erg3 == 3) ;{
         printf("Ihr Ergebnis lautet: %.2f");
         }
         else if (erg4 == 4) ;{
         printf("Ihr Ergebnis lautet: %2.f");
         }             
    
        system("PAUSE");
        return 0;       
    }
    

    Ich will einfach nur, dass wenn man eine zahl von 1 - 4 drückt, dass das ergebnis berechnet wird. Bis zum /*Ergebnis*/ ist denke mal alles richtig, nur jetzt weiß ich nicht mehr weiter -.- oO

    Was sagt Ihr?

    PS: Primärer AUsdruck wird vor else erwartet...was soll det sein? ...



  • Sie dir erstmals die Datentypen an, mit denen du vorhast zu rechnen.
    Beim Einlesen hat sich auch noch ein kleiner, womöglich ungewollter Fehler eingeschlichen.

    Zum switch()case Konstrukt:

    switch(waehlen) { 
                         case 1: printf("\nIhr Ergebnis lautet: %.2f", zahl1 + zahl2); break; 
                         case 2: printf("\nIhr Ergebnis lautet: %.2f", zahl1 - zahl2); break;
                         case 3: printf("\nIhr Ergebnis lautet: %.2f", zahl1 * zahl2); break; 
                         case 4: printf("\nIhr Ergebnis lautet: %.2f", zahl1 / zahl2); break; 
                         }
    

    ist wohl die angehnemste Lösung.



  • gefunden 😃 und ja, es war ein UNGEWOLLTER fehler 😃



  • Auf ein letztes.

    In dem Thread nebenher hast du ja deine Stellung zu Büchern schon erwähnt.

    Das was du da machst ist wirklich nicht sinnvoll. Ich hab es dir sciher schon geschrieben(bin es gerade leid nachzuschauen), dass du nicht immer 4 Variablen nutzt, wo es nur eine benötigt.

    Du hast es scheinbar noch nicht verstanden, wie das alles theoretisch funktioniert und willst jetzt schon praktisch an die Sachen gehen. Es gibt sicherlich Anfängerbücher, die einem Sachen wie die richtige Nutzung von Variablen(anhand von Schubladen oder was auch immer) erklärt. Und wenn ich von Anfängerbüchern rede, dann meine ich ebendiese und zwar GUTE... sowas ersetzt dir kein Tutorial.

    Du brauchst mehr THEORIE!



  • Ich hab doch damit erst angefangen 🙂 Meine Fehler hab ich schon gefunden. Es ist doch so, dass man durch die Praxis mehr lernt 🙂



  • Windassel schrieb:

    Ich hab doch damit erst angefangen 🙂 Meine Fehler hab ich schon gefunden. Es ist doch so, dass man durch die Praxis mehr lernt 🙂

    Ja, man lernt durch die Praxis. Aber wie DaRe schon gesagt hat: Ohne Theorie gehts nicht. Ich musste mich auch durch die Sprach-Theorie schlagen, Syntax lernen und mich mehr als einmal fragen warum dieses Übungs-Programm nicht das macht was es soll. Und damals kannte ich das Forum nicht; Probleme lösen hieß solange probieren bis es funktionierte.
    Wenn du einmal die Theorie drauf hast, dann macht es Sinn durch Praxis zu lernen. Denn dann kannst du viel besser verstehen was das Problem ist und wie man es am besten löst.



  • ich lese mir die theorie in verschiedenen tutorials durch, und versuche dann meine eigenen aufgaben danach zu erstellen. Klappt eigentlich ganz gut. Natürlich geht auch ohne theorie garnix 😃 dann wüsste ich ja netmal wie ich anfangen soll



  • Windassel schrieb:

    ich lese mir die theorie in verschiedenen tutorials durch, und versuche dann meine eigenen aufgaben danach zu erstellen. Klappt eigentlich ganz gut. Natürlich geht auch ohne theorie garnix 😃 dann wüsste ich ja netmal wie ich anfangen soll

    na dann versuche es noch etwas mit der praxis und mach mal deine eingabe absturz sicher.
    😉



  • Bin seid 2 Tagen an nem kleinen Programm dran, und habs vorhin fertig gestellt 🙂 Kann zwar nicht viel, aber fürn Anfang denke ist es ganz okay

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int main()
    {
        int zahleingeben, zahleingeben1;
        int untermenuepunktergebnis;
        int menuepunkt = 0;
        int untermenuepunkt = 0;
    
        /*Zahlen eingeben*/
        printf("Taschenrechner 1.0\n");
        printf("Bitte geben Sie keine Fliesskommazahlen ein, Danke\n");
        printf("---------------------\n\n");
        printf("Geben Sie einen Wert fuer Zahl[1] ein: ");
        scanf("%i", &zahleingeben);
        printf("Geben Sie einen Wert fuer Zahl[2] ein: ");
        scanf("%i", &zahleingeben1);
    
        printf("---------------------\n\n");
    
        /*Menuepunkt auswaehlen*/
        printf("Bitte waehlen Sie als naechstes einen Menuepunkt aus:\n\n");
        printf("1: Summe, Differenz etc. berechnen\n");
        printf("2: Groessere bzw. kleinere Zahl errechnen lassen\n\n");
        printf("Ihre Zahl: ");
        scanf("%i", &menuepunkt);
        printf("---------------------\n\n");
    
        /*Wenn Menuepunkt 1 ausgewaehlt wird, dann passiert das*/
        if (menuepunkt == 1) {
    
                     printf("Was moechten Sie berechnen?\n");
                     printf("1: Die Summe\n");
                     printf("2: Die Differenz\n");
                     printf("3: Das Produkt\n");
                     printf("4: Den Quotienten\n\n");
                     printf("Ihre Zahl: ");
                     scanf("%i", &untermenuepunkt);
                     }
                     /*Wenn ein Untermenuepunkt ausgewaehlt wird, dann passiert das*/
                     if (untermenuepunkt == 1) {
                     printf("\nIhr Ergebnis: %i\n", zahleingeben + zahleingeben1);
                     }
    
                     else if (untermenuepunkt == 2) {
                     printf("\nIhr Ergebnis: %i\n", zahleingeben - zahleingeben1);
                     }
    
                     else if (untermenuepunkt == 3) {   
                     printf("\nIhr Ergebnis: %i\n", zahleingeben * zahleingeben1);
                     }
    
                     else if (untermenuepunkt == 4) {        
                     printf("\nIhr Ergebnis: %i\n", zahleingeben / zahleingeben1);
                     }
    
         /*Wenn Menuepunkt 2 ausgewaehlt wird, dann passiert das*/    
         else if ((menuepunkt == 2) && (zahleingeben > zahleingeben1)) {
                         printf("%i ist groesser als %i\n", zahleingeben, zahleingeben1);
                         }
    
                         else if (zahleingeben < zahleingeben1) {
                         printf("%i ist kleiner als %i\n", zahleingeben, zahleingeben1);
                         }
                         else if(zahleingeben = zahleingeben1) {
                         printf("%i hat den selben Wert wie %i", zahleingeben, zahleingeben1);
                         } 
    
             printf("\n---------------------\n\n");
    
        system("PAUSE");
        return 0;
    }
    


  • Windassel schrieb:

    printf("Bitte geben Sie keine Fliesskommazahlen ein, Danke\n");
    

    das ist doch ein scherz, ne. 😃


Anmelden zum Antworten