grundrechentrainer



  • Hallo Leute 🙂
    ich schreibe grade an meinem Rechentrainer, komme aber nicht weiter 😞
    nachdem ich die erste lösung von einer aufgabe eingebe gibt der die nächste automatisch ein und jetzt weiß ich nicht was ich machen soll! und ich kenn mich damit nicht so gut aus... kann mir da jemand weiter helfen ?

    //---------------------------------------------------------------------------
    
    #include <iostream>
    //cleanscreen
    #include <conio.h>
    //Zufallszahlen
    #include <ctime>
    //Schriftfarbe
    #include <windows.h>
    #pragma argsused
    using namespace std;
    
    //---------------------------------------------------------------------------
    
      //Variablen für die Funktionen
      int i_rechenart, a_zahl, b_zahl, i_anzahl, int_i;
    
      //Variablen für die Zufallszahlen
      int zufallszahl, limit;
    
      //Variable dowhile Schleife
      char char_v;
    
    // Umlaute
    
        // ö
       char oe=char(148);
       // ä
       char ae=char(132);
    
    // Funktion 1
    
    int rechenart()
    {
      cout <<"Welche Rechenart m" <<oe<< "chtest du benutzen?" <<endl;
      cout <<"                                " <<endl;
      cout <<"[1]    Addieren    +"<<endl;
      cout <<"[2]  Subtrahieren  -"<<endl;
      cout <<"[3] Multiplizieren *"<<endl;
      cout <<"[4]   Dividieren   :"<<endl;
      cout <<"                    "<<endl;
    
      // Eingabe
      cin >> i_rechenart;
    
      return i_rechenart;
    }
    
            // Funktion 2
    
            int Zahlenraum()
            {
            cout <<"Jetzt kannst du den Zahlenraum aussuchen."<< endl;
            cout <<"                    "<<endl;
    
            cout <<"Von: ";
            cin >> a_zahl;
    
            cout <<"bis ";
            cin >> b_zahl;
    
            zufallszahl = (double)rand() / (b_zahl + 1) * limit + a_zahl;
    
            return a_zahl, b_zahl;
            }
    
                    // Funktion 3
    
                    int Aufgabenzahl()
                    {
                    cout <<"und wie viel Aufgaben m" <<oe<< "chtest du rechnen?"<< endl;
    
                    cin >> i_anzahl;
    
                    return i_anzahl;
                    }
    
    //Start des Hauptprogramms
    
    int main()
    {
    do
    {
    //Schriftfarbe ändern
    system("COLOR 0C");
    
      // Begrüßung
      cout <<"================================" <<endl;
      cout <<"=                              =" <<endl;
      cout <<"= Hallo!                       =" <<endl;
      cout <<"=                              =" <<endl;
      cout <<"=                              =" <<endl;
      cout <<"= Willkommen im Rechentrainer! =" <<endl;
      cout <<"=                              =" <<endl;
      cout <<"=                              =" <<endl;
      cout <<"================================" <<endl;
      cout <<"                                " <<endl;
      cout <<"                                " <<endl;
      cout <<"                                " <<endl;
      cout <<"                                " <<endl;
    
      //Funktionen werden gestartet
    
      cout <<"Bevor du anf"<<ae<<"ngst, musst du noch ein paar Fragen beantworten."<< endl;
      cout <<"                                " <<endl;
      cout <<"                                " <<endl;
    
      // erste Funktion wird aufgerufen
      rechenart();
      clrscr ();
    
      //zweite Funktion wird aufgerufen
      Zahlenraum();
      clrscr ();
    
      //dritte Funktion wird aufgerufen
      Aufgabenzahl();
      clrscr ();
    
        //Variablen für die Rechnung und For-Schleife
    
        float f_sum, f_prod, f_dif, f_quot, ergebnis;
        int z, x;
    
            //Rechnung mit For-Schleife
    
            for(z=1; z <= i_anzahl; z++)
            {
            if (i_rechenart = 1)
            f_sum = zufallszahl + limit;
            //Ausgabe
            cout<< limit << "+" <<zufallszahl<< "=" ;
            cin >> ergebnis;
    
            if (i_rechenart = 2)
            f_dif = zufallszahl - limit;
            //Ausgabe
            cout<< limit<< "-" <<zufallszahl<< "=" <<  f_dif  <<endl;
    
            if (i_rechenart = 3)
            f_prod = zufallszahl * limit;
            //Ausgabe
            cout<< limit<< "*" <<zufallszahl<< "=" <<  f_prod <<endl;
    
            if (i_rechenart = 4)
            f_quot = zufallszahl / limit;
            //Ausgabe
            cout<< limit<< "/" <<zufallszahl<< "=" <<  f_quot <<endl;
    
            }
    
      //Eingabe Variable
      cin >> char_v;
    
      //Pruefung der Bedingung
      if (char_v != 'J' && char_v != 'j' && char_v != 'N' && char_v != 'n')
    
      //Ausgabe falls falsche Eingabe
      cout << "Falsche Eingabe!" << "\n";
      }
      //Bedingung um zu Wiederholen
      while (char_v != 'J' && char_v != 'j');
    
      //Ausgabe falls schleife beendet
      cout << "Bis zum nächsten mal! " << endl;
    
            system ("PAUSE");
            return 0;
    }
    //---------------------------------------------------------------------------
    

    Dankeschön schon mal im vorraus 🙂



  • Hallo tuli,

    Willkommen im C++-Forum.

    tausche die Zeilen 128 bis 154 gegen diese hier aus:

    //Rechnung mit For-Schleife
            for(z=1; z <= i_anzahl; z++)
            {
                if (i_rechenart == 1) // <=== '=' ist Zuweisung und '==' Vergleich
                {
                    f_sum = zufallszahl + limit;
                    //Ausgabe
                    cout<< limit << "+" <<zufallszahl<< "=" ;
                    cin >> ergebnis;
                } // <=== if() geht bis zur geschlossenen Klammer
    
                if (i_rechenart == 2) 
                {
                    f_dif = zufallszahl - limit;
                    //Ausgabe
                    cout<< limit<< "-" <<zufallszahl<< "=" <<  f_dif  <<endl;
                }
    
                if (i_rechenart == 3)
                {
                    f_prod = zufallszahl * limit;
                    //Ausgabe
                    cout<< limit<< "*" <<zufallszahl<< "=" <<  f_prod <<endl;
                }
    
                if (i_rechenart == 4)
                {
                    f_quot = zufallszahl / limit;
                    //Ausgabe
                    cout<< limit<< "/" <<zufallszahl<< "=" <<  f_quot <<endl;
                }
            }
    

    .. dann geht's schon besser, aber noch nicht gut.
    Die Variable 'limit' wird nicht initialisiert und die Berechnung der Zufallszahl in Zeile 64 macht auch nicht das, was Du denkst, was es machen sollte.

    Gruß
    Werner



  • Dankeschön 🙂
    Hab voll die doofen Fehler im Quelltext gemacht!

    Aber jetzt läuft es endlich wie ich das haben wollte



  • Um solche Fehler zum vermeiden (auch bei Flüchtigkeitsfehlern) kann man sich überlegen, den konstanten Ausdruck immer nach links zu stellen. Da beschwert sich der Compiler schon bei der Zuweisung. Sieht manchmal aber etwas gewöhnungsbedürftig aus.

    // kompiliert, ist aber wohl nicht das Gewünschte
    if( a = 1 )
    
    // kompiliert nicht
    if( 1 = a )
    

Anmelden zum Antworten