Programm ist zu kompliziert!



  • @INTEGER:
    Garnicht schön, das in eine Textdatei einzulesen ist viel sinnvoller, sonst sieht der Code nur unnötig hässlich aus...



  • Habs erstmal INTEGER versucht. Nur einen (bestimmt lächerlichen)Fehler hab ich nicht rausgekriegt.

    x = DeinZufallszahlgenerator(0 bis 5);
    

    25 F:\c++\pro\franz2\main2.cpp
    parse error before numeric constant



  • char* x = "DeinZufallszahlgenerator(0 bis 5)";
    // du hast die "" vergessen!
    

    Mit dem bößen char* 😉

    Oder mach ne INTEGER (int) Funktion, die einen booleschen (heisst das so? oder boolschen :D) Wert zurückliefert, z.b.:

    if (ueberpruefen == 0) 
    cout <<"Richtig!";
    else
    cout <<"Falsch!";
    

    LOL, vielleicht geht's ja, habs net ausprobiert



  • Natürlich musst du erst die Funktion DeinZufallszahlgenerator() definieren, um sie anwenden zu können.
    Oder du benutzt den Zufallsgenerator der Standardbiliothek.

    #include <iostream>
    #include <cstdlib>
    #include <ctime>
    using namespace std;
    
    int main()
    {
      srand(time(NULL));
      cout << rand()%6;
    }
    


  • Hmm mit "" gehts auch net. 😮

    5 F:\c++\pro\franz2\main2.cpp `main' must return `int'

    F:\c++\pro\franz2\main2.cpp [Warning] In function `int main(...)':

    25 F:\c++\pro\franz2\main2.cpp invalid conversion from `const char*' to `int'

    F:\c++\pro\franz2\Makefile.win [Build Error] [main2.o] Error 1

    #include <iostream>
    using namespace std;

    void main()
    {
    int x;
    char *dt[5];
    char *fr[5];
    char *eingabe;
    dt[0]="ich";
    dt[1]="du";
    dt[2]="er";
    dt[3]="wir";
    dt[4]="ihr";
    dt[5]="sie (m.)";
    fr[0]="je";
    fr[1]="tu";
    fr[2]="il";
    fr[3]="nous";
    fr[4]="vous";
    fr[5]="ils";

    while (eingabe != "exit")
    {
    x = "DeinZufallszahlgenerator(0 bis 5)";


    cin >> eingabe;
    if (eingabe == fr[x])
    cout<<"richtig!\n";
    else
    {
    cout<<"falsch!\n" ;

    return 0;
    }
    }
    }



  • also entwerde du setzt ein int vor die main() oder du nimmst das return 0 raus

    x = "DeinZufallszahlgenerator(0 bis 5)";
    

    das geht so nicht. du versuchst da ein character in ein integer umzuwandeln
    ich denke mal deinZufallszahlgenerator soll ne funktion sein oder?

    x = deineFunktion();
    

    dann muss das so lauten. wobei die Funktion einen int-wert zurückgeben muss



  • #include <iostream>
    #include <cstdlib>
    #include <string>
    #include <ctime>
    using namespace std;
    
    // deine Funktion
    int DeinZufallszahlgenerator()
    {
      srand(time(NULL));
      return rand()%6;
    }
    
    int main()
    {
      int x;
      char* dt[5];
      char* fr[5];
      string eingabe;
      dt[0]="ich";
      dt[1]="du";
      dt[2]="er";
      dt[3]="wir";
      dt[4]="ihr";
      dt[5]="sie (m.)";
      fr[0]="je";
      fr[1]="tu";
      fr[2]="il";
      fr[3]="nous";
      fr[4]="vous";
      fr[5]="ils";
    
      while (eingabe != "exit")
      {
         x = DeinZufallszahlgenerator();
         cout << dt[x] << "\n";
         cin >> eingabe;
         if (eingabe == fr[x])
           cout << "richtig!\n";
         else
         {
           cout << "falsch!\n" ;
           cout << "richtig waere: " << fr[x] << "\n";
           return 0;
         }
      }
    }
    


  • @ChrissiB:

    Das aufrufen von srand in der Funktion ist sehr ungünstig. Das sollte nämlich nur einmal im Programm passieren. Du tust es aber vor jedem Aufruf und wenn die Zeitschritte zwischen zwei Aufrufen so klein sind, daß time keinen Unterschied feststellt kriegst Du die gleiche Zahl geliefert.

    Probier mal ein

    int array[100];
    for(int i=0; i<100; ++i)
    array[i] = DeinZufallsgenerator();

    und laß Dir danach das Array ausgeben.

    MfG Jester



  • Jester schrieb:

    @ChrissiB:

    Das aufrufen von srand in der Funktion ist sehr ungünstig. Das sollte nämlich nur einmal im Programm passieren. Du tust es aber vor jedem Aufruf und wenn die Zeitschritte zwischen zwei Aufrufen so klein sind, daß time keinen Unterschied feststellt kriegst Du die gleiche Zahl geliefert.

    Probier mal ein

    int array[100];
    for(int i=0; i<100; ++i)
    array[i] = DeinZufallsgenerator();

    und laß Dir danach das Array ausgeben.

    MfG Jester

    Ja, das stimmt. Man kann srand() auch manuell beim Start des Programms ausführen lassen.
    Ich habe schon lange nicht mehr mit Randoms gearbeitet 🙄



  • Danke für die schnellen Verbesserung! Dann kann ich ja übers Wochende richtig büffeln bzw. spielen (EA GAMES present: "VOKABOLATOR"). Ok der war sch***** aber Hauptsache ich lern irgendwann mal programmieren. 😞

    Gruss Axo


Anmelden zum Antworten