Startfehler



  • 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. 😃



  • 😃 😃 😃

    wollte das einfach mal einbringen 😃

    aber wie siehts sonst mit dem code aus?



  • für den anfang ok.

    für eine künftige version 1.1:

    - der datentyp sollte unbedingt double sein.
    - das programm sollte 'selbständig' erkennen, was zu tun ist. im sinne von

    switch (operator)
    {
        case '*'
       // multiplizieren
        ...
        break;
        ...
    }
    

    - der rückgabewert von scanf sollte überprüft werden, denn wenn jemand buchstaben eingibt, macht dein programm nen klappmann.
    - künftig sollten die einrückungen ausgewogener werden, du hast da zu viele leerzeichen drin.
    - die einteilung in zwei menüpunkte finde ich übertrieben, so viele optionen sind es ja nicht.
    - ich finde, die variablen-namen sind zu lang.
    🙂



  • okay danke 🙂 double hatte ich in der theorie noch nicht. bis jetzt hab ich immer nur int und float benutzt

    das mit dem rückgabewert hatte ich auch nicht

    😃 der eine gesagt, dass sie zu kurz sind, du sagst sie sind zu lang 😃 ich hab sie so, dass ich mir merken kann was damit gemeint ist 😛 sonst komm ich ja noch durcheinander 😛

    Danke für das Feedback erstma 🙂



  • was mir noch auffällt, beim ersten überfliegen habe ich übersehen:
    wenn du zwei untermenüs benutzt bzw. generell solltest du menüs klar voneinander trennen

    if ( 1 == menuepunkt )
    {
    ...
    }
    if ( 2 == menuepunkt )
    {
    ...
    }
    usw.
    

    denn bei deinen if else ketten ist es relativ mühsam zu erkennen, was das programm eigentlich bei welcher bedingung macht. hast du das programm eigentlich schon getestet?



  • klar hab ich das programm getestet. läuft auch so wie ich es haben will.

    Bin gerade an nem anderen dran, was so ähnlich aufgebaut ist wie das



  • weiß eigentlich jemand wie man das in c schreibt, wenn man "Zurück" gehen möchte?, und dann zum Menue davor kommt?



  • menüs in funktionen aufteilen und durch erfüllung von if/else bedingungen menüfunktionen aufrufen.



  • hm okay, dann versuch ich es mal so mit if else. dachte da würde es einen einfacheren weg geben^^



  • CStoll schrieb:

    Korrekt heißt es entweder int main(void) oder int main(int argc, char** argv) - genau das will dir der Compiler auch mitteilen.

    Fixed that for you.
    (Ein int main() ist in C eine Funktion mit beliebigen Argumenten.)


Anmelden zum Antworten