Programm Zahlenraten - 2 Fragen hab ich noch - Wichtig!!!



  • Hallo!

    Habe das Programm soweit verändert, dass der Computer wir die Bereiche Warm und Heiss anzeigt, nur den Bereich Kalt will er mir nicht anzeigen, also wenn die Ratezahl 50 Nummern größer oder kleiner ist als die Zufallszahl. Wo liegt der Fehler?

    Außerdem muß ich noch einen Versuchszähler einfügen. Kann ich dass mit
    for(i=1;i=i+1;++i) machen? Ein Tip wäre gut.

    Hier das Programm.

    #include "stdafx.h" //Anmeldung der Bibliotheken
    #include <stdio.h> // "
    #include <stdlib.h> //Anmeldung der Bibliotheken
    #include <time.h> //Anmeldung der Bibliotheken

    // Konstanten + var-definitionen
    const wertebereich = 1001;
    int Zufallszahl, Ratezahl, Versuche;

    // Funktion
    int zufall (int max_zufall=wertebereich)
    {
    return rand() %1001;
    }

    // Programm
    void main()
    {
    srand( (unsigned) time(NULL) ); // randomize

    Zufallszahl = zufall();

    printf ("Herzlich Willkommen beim Zahlenraten\n\n");
    printf ("Sie muessen versuchen eine von mir per Zufallsgenerator ausgewaehlte\n");
    printf ("Zahl zwischen 0 und 1000 zu erraten!\n\n");
    printf ("Das System gibt Ihnen folgende Hilfe: Wenn Ihre Zahl\n\n");
    printf ("1 bis 10 Nummern < oder > ist als die Zufallszahl erscheint ein Heiss\n");
    printf ("11 bis 50 Nummern < oder > ist als die Zufallszahl erscheint ein Warm\n");
    printf ("51 Nummern < oder > ist als die Zufallszahl erscheint ein Kalt\n\n");
    printf ("Am Ende wird Ihnen die Anzahl Ihrer benoetigten Versuche angezeigt.\n\n");
    printf ("Viel Erfolg!\n\n");

    do
    {
    scanf ("%d", &Ratezahl);
    if (Ratezahl < Zufallszahl+11 && Ratezahl > Zufallszahl-11)
    printf ("Heiss\n");
    if (Ratezahl > Zufallszahl+10 && Ratezahl < Zufallszahl+51)
    printf ("Warm\n");
    if (Ratezahl < Zufallszahl-10 && Ratezahl > Zufallszahl-51)
    printf ("Warm\n");
    if (Ratezahl < Zufallszahl-50 && Ratezahl > Zufallszahl+50)
    printf ("Kalt\n");

    }
    while ( Ratezahl != Zufallszahl );
    printf ("Sie haben die richtige Zahl gefunden");

    }



  • Außerdem muß ich noch einen Versuchszähler einfügen. Kann ich dass mit
    for(i=1;i=i+1;++i) machen? Ein Tip wäre gut.

    Keine Ahnung, was du mit der schleife willst.

    #include "stdafx.h" //Anmeldung der Bibliotheken 
    #include <stdio.h> // " 
    #include <stdlib.h> // Wenn du C Programmierst, dann bitte im C-Forum
    #include <time.h> 
    
    const wertebereich = 1001; // Typ?
    int Zufallszahl, Ratezahl, Versuche; // Warum global?
    
    // Funktion // Ach ne, wer hätte das gedacht
    int zufall (int max_zufall=wertebereich) 
    { 
    return rand() %1001; // Was bringt der Parameter, wenn du doch hard codierst?
    } 
    
    void main() // Fehler!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    { 
       srand( (unsigned) time(NULL) ); // randomize // Was soll der Kommentar sagen?
    
       Zufallszahl = zufall(); 
    
       printf ("Herzlich Willkommen beim Zahlenraten\n\n"); 
       printf ("Sie muessen versuchen eine von mir per Zufallsgenerator ausgewaehlte\n"); 
       printf ("Zahl zwischen 0 und 1000 zu erraten!\n\n"); 
       printf ("Das System gibt Ihnen folgende Hilfe: Wenn Ihre Zahl\n\n"); 
       printf ("1 bis 10 Nummern < oder > ist als die Zufallszahl erscheint ein Heiss\n"); 
       printf ("11 bis 50 Nummern < oder > ist als die Zufallszahl erscheint ein Warm\n"); 
       printf ("51 Nummern < oder > ist als die Zufallszahl erscheint ein Kalt\n\n"); 
       printf ("Am Ende wird Ihnen die Anzahl Ihrer benoetigten Versuche angezeigt.\n\n"); 
       printf ("Viel Erfolg!\n\n"); 
    
       do 
       { 
          scanf ("%d", &Ratezahl); 
          if (Ratezahl < Zufallszahl+11 && Ratezahl > Zufallszahl-11) 
             printf ("Heiss\n"); 
          if (Ratezahl > Zufallszahl+10 && Ratezahl < Zufallszahl+51) 
             printf ("Warm\n"); 
          if (Ratezahl < Zufallszahl-10 && Ratezahl > Zufallszahl-51) 
             printf ("Warm\n"); 
          if (Ratezahl < Zufallszahl-50 && Ratezahl > Zufallszahl+50) 
             printf ("Kalt\n"); 
    
       } 
       while ( Ratezahl != Zufallszahl ); 
       printf ("Sie haben die richtige Zahl gefunden"); 
    
    }
    

    Wie auch immer: Füg noch 'ne Variable ein, die du mit 0 initialisierst. Die Zählst du dann in der Schleife hoch. Dann hast du deinen Zähler.



  • const wertebreich = 1; ich tippe mal das wertebereich vom typ apfelbaum ist.

    int main(int argc, char* argv[]), int main()...aber nicht mehr void main().

    macht irgendwie keinen spass diesen code zu lesen )-:
    ups, ist ja auch C und ich schaue aber ins C++ Forum 🙂



  • Ich denke Fehler liegt immer bei den &&'s, müsste das nicht || sein? So istja die Bedingung kalt nur erfüllt wenn die ratezahl einmal um 50 kleiner als die zufallszahl ist und gleichzeitig um 50 größer was niemals sein wird.

    also && durch || ersetzen.

    Das die anderen wie warm etc. gingen war sicher nur zufall



  • Sorry hab eben nicht genau hingesehen, der Rest kann so bleiben.
    Einfach beim kalt && durch || ersetzen.



  • Und weil ich gerade nichts zu tun habe 😉 hier mal der c++ Code, alles wurde in Module aufgeteilt, eine schön saubere Mainfunktion ist das Ergebnis 😃

    #include <iostream>
    #include <stdlib.h>
    #include <time.h>
    using namespace std;
    
    // Konstante
    const int wertebereich = 1001;
    
    // inline void randomize() ///
    inline void randomize()
    {
     srand((unsigned) time(NULL));
    }
    
    // inline int zufall() ///////////
    inline int zufall()
    {
     return rand()%wertebereich;
    }
    
    // void einleitung() ///////////////////////////////////////////////////////////
    void einleitung()
    {
     cout<<"Herzlich Willkommen beim Zahlenraten\n\n";
     cout<<"Sie muessen versuchen eine von mir per Zufallsgenerator ausgewaehlte\n";
     cout<<"Zahl zwischen 0 und 1000 zu erraten!\n\n";
     cout<<"Das System gibt Ihnen folgende Hilfe: Wenn Ihre Zahl\n\n";
     cout<<"1 bis 10 Nummern < oder > ist als die Zufallszahl erscheint ein Heiss\n";
     cout<<"11 bis 50 Nummern < oder > ist als die Zufallszahl erscheint ein Warm\n";
     cout<<"51 Nummern < oder > ist als die Zufallszahl erscheint ein Kalt\n\n";
     cout<<"Am Ende wird Ihnen die Anzahl Ihrer benoetigten Versuche angezeigt.\n\n";
     cout<<"Viel Erfolg!\n\n";
    }
    
    // void zahltippen(int zufallszahl) /////////////////////////////////////////////
    void zahltippen(int zufallszahl)
    {
     int ratezahl=0;
     do
      {
       cout<<"Welche Zahl tippen sie? ";
       cin>>ratezahl;
    
       if (ratezahl < zufallszahl+11 && ratezahl > zufallszahl-11)
          cout<<"Heiss\n";
       if (ratezahl > zufallszahl+10 && ratezahl < zufallszahl+51)
          cout<<"Warm\n";
       if (ratezahl < zufallszahl-10 && ratezahl > zufallszahl-51)
          cout<<"Warm\n";
       if (ratezahl < zufallszahl-50 || ratezahl > zufallszahl+50)
          cout<<"Kalt\n";
    
       }while(ratezahl != zufallszahl);
    
     cout<<"Sie haben die richtige Zahl gefunden!";
    }
    
    // int main(int argc, char *argv[])
    int main(int argc, char *argv[])
    {
     int zufallszahl = zufall();
     zahltippen(zufallszahl);
    
     return (0);
    }
    

    Gruß

    1280x1024 🙂



  • Boa ich spam den Thread ja zu 😃

    Die einleitung() hab ich vergessen in main aufzurufen, dass kann man ja eben noch selber eintippen. Was ich aber eigentlich sagen wollte ist das die Bereiche heiss / warm etc. viel zu klein sind. Da dauert das raten ja ewig, ich würd sie größer gestalten 🙂


Anmelden zum Antworten