Zahlenraten - Zufallszahl läuft weiter !!!



  • Hallo!

    Also mein Programm, auch wenn es für Cracks nichtschön zu lesen ist, läuft. Allerdings merkt sich der Computer nicht die Zufallszahl für das Spiel, sondern anscheinend läuft der Generator immmer weiter. Wie kann ich das ändern ?

    Hier das Programm:

    #include "stdafx.h"
    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>

    const wertebereich=999;
    int Zufallszahl (int max_Zufallszahl=wertebereich)

    {
    return rand() %1000;
    }

    int main()
    {
    int Zufallszahl, Ratezahl, i=0;

    srand((unsigned)time(NULL));
    rand();

    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
    {

    Zufallszahl = (rand() % 1000);
    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 >1 || Ratezahl > Zufallszahl+50 && Ratezahl <999)
    printf ("Kalt\n");
    if (Ratezahl > 999)
    printf ("Es werden nur Zahlen zwischen 0 und 1000 gesucht!\n");
    ++i;

    }
    while ( Ratezahl != Zufallszahl );
    printf ("Sie haben die richtige Zahl gefunden\n");
    printf("Dazu benoetigten Sie %d Versuche!", i);

    return 0;

    }



  • Na is doch logo

    do
    {
    
    Zufallszahl = (rand() % 1000);
    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 >1 || Ratezahl > Zufallszahl+50 && Ratezahl <999)
    printf ("Kalt\n");
    if (Ratezahl > 999)
    printf ("Es werden nur Zahlen zwischen 0 und 1000 gesucht!\n");
    ++i;
    
    }
    while ( Ratezahl != Zufallszahl );
    

    Deiner Zufallszahl wird nach jedem Durchgang wieder ein neuer Wert zugewiesen, pack die initialisierung aus der do while schleife.



  • Du berechnest bei jedem Raten eine neue Zufallszahl. Du darfst aber natürlich nur einmal eine Zufallszahl berechnen. So dürfte es gehen:
    [cpp]
    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>

    const wertebereich=999;
    int Zufallszahl (int max_Zufallszahl=wertebereich)
    {
    return rand() %1000;
    }

    int main()
    {
    int Zufallszahl, Ratezahl, i=0;

    srand((unsigned)time(NULL));
    rand();

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

    Zufallszahl = (rand() % 1000);
    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 >1 || Ratezahl > Zufallszahl+50 && Ratezahl <999)
    printf ("Kalt\n");
    if (Ratezahl > 999)
    printf ("Es werden nur Zahlen zwischen 0 und 1000 gesucht!\n");
    ++i;

    }
    while ( Ratezahl != Zufallszahl );
    printf ("Sie haben die richtige Zahl gefunden\n");
    printf("Dazu benoetigten Sie %d Versuche!", i);

    return 0;
    }
    [\cpp]



  • Also ich finde deine Abfragen in der Schleife immer noch unschön. Außerdem hast du eine total überflüssige Funktion (da du sie ja nicht hernimmst), die einen Fehler in den Parameterangaben hat, die übrigens auch total überflüssig ist, weil der Parameter nicht verwendet wird und du hast eine total überflüssige Konstante (da du diese nur bei der überflüssigen Funktion verwendest).



  • Na er hatte ja schon viele gute Vorschläge + Code bekommen, ich denke das ist einfach eine Hausaufgabe und er ist schon zufrieden wenns irgendwie läuft 😃


Anmelden zum Antworten