Startfehler



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



  • Es wird ja besser, muss ich jetzt zugeben... aber die Theorie ist immernoch nicht durchgebraten:
    Schlag mal iwo nach boolscher Algebra

    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);
    }
    

    Ich hab mir mal erlaubt es einzurücken.

    Das du deinen Code geprüft hast, wage ich zu bezweifeln:
    Was passiert, wenn im Menü 3 ausgewählt wird? Auch wenn dies nicht gehen sollte, wird da eine Ausgabe getätigt. Da hast du dich noch nicht allzu sehr mit den UND und ODER Verknüpfungen auseinander gesetzt.

    Wie gesagt, die Boolsche Algebra würde dir hier mit den Äquivalenten der Deutschen Sprache helfen, was es in manchen Situation sehr einfach macht, ausformulierte Bedingungen zu transkribieren.

    Die Variablen für (Unter)Menüpunkt kann man auf eine Variable begrenzen.

    EDIT: im letzten else if hab ich noch vergessen zu erwähnen, dass ein = kein == ist... eine Zuweisung ergibt immer die zugewiesene Zahl zurück.



  • Danke für das Lob 🙂

    Ja, auch wenn ich da eine andere Zahl eingeben würde, würde das da auftauchen. bei switch case kann man ja default angeben und dann dahinter eine Meldung setzen, nur wie das bei if else läuft weiß ich noch nicht. für mich war es erstmal wichtig, dass ich das grobe hinbekommen habe.



  • Hat mit switch garnix zu tun. Das geht auch mit if. Du musst es nur verschachteln:

    //...
    else if(menuepunkt == 2)
    {
        if(zahl1 > zahl2) //Variablennamen gekürzt
        {
            printf("%i ist größer als %i", zahl1, zahl2);
        }
        else if(zahl1 < zahl2)
        {
            printf("%i ist kleiner als %i", zahl1, zahl2);
        }
        else if(zahl1 == zahl2) //Beachte: ==, und nicht =
        {
            printf("%i ist gleich %i", zahl1, zahl2)
        }
    }
    


  • Hab jetzt noch ein wenig rumgebastelt und komme gut vorran, leider finde ich - und mir fallen auch - keine weiteren Übungsaufgaben ein. Vielleicht habt Ihr ja noch was für mich? Was ich bis jetzt gemacht habe: Variablen, mathematische funktionen, verzweigen, if else, break, switch case, default und bin jetzt bei schleifen angekommen. Was könnte ich mit dem Wissen noch so programmieren?

    mit der such funktion hab ich nicht wirklich das rausgefunden, was ich brauche, nur ma so



  • 1. Falls du schon Arrays hattest (könnte man bei Variablen reininterpretieren):
    Schreibe ein Programm, dass vom Benutzer Werte einliest und dann den Mittelwert berechnet!
    Die Anzahl der Werte kann vom Benutzer im Bereich von 1 - 20 ausgesucht werden (Limitierung weil du wahrscheinlich noch kein malloc und Zeiger kennst)

    Bsp. (Benutzereingaben kursiv):

    Geben sie die Anzahl ein: [i]5[/i]
    
    Wert 1: [i]20[/i]
    Wert 2: [i]10[/i]
    Wert 3: [i]20[/i]
    Wert 4: [i]10[/i]
    Wert 5: [i]15[/i]
    
    Der Mittelwert beträgt: 15
    
    Geben sie die Anzahl ein: [i]21[/i]
    Sorry das sind zu viele Werte.
    
    Geben sie die Anzahl ein: [i]0[/i]
    Willst du mich verar... ?
    

    2. Schreibe ein Programm, dass die Quadratzahlen in einem vom Benutzer festgelegtem Bereich ausgibt! Beachte, das der Bereich auch rückwärts gehen kann!

    Bsp.:

    Bereich-Start: [i]5[/i]
    Bereich-Ende: [i]10[/i]
    
    5 ins Quadrat ist: 25
    6 ins Quadrat ist: 36
    [...]
    10 ins Quadeat ist: 100
    
    Bereich-Start: [i]6[/i]
    Bereich-Ende: [i]4[/i]
    
    6 ins Quadrat ist: 36
    5 ins Quadrat ist: 25
    4 ins Quadrat ist: 16
    

    Das fällt mir jetzt mal spontan als Übungsprogramm ein.



  • arrays hatte ich noch nicht. vor arrays kommen erst zeiger und funktionen. Denke ich versuche die Aufgabe dennoch. 🙂



  • Denke ich versuche die Aufgabe dennoch

    Die erste Aufgabe macht nur mit Arrays Sinn (falls du dass mit "dennoch versuchen" meinst)!
    Aber die 2. sollte mit deinem Momentanen Wissensstand möglich sein.


Anmelden zum Antworten