Hi Leute!
Ich habe ein Problem mit der Erstellung von Zufallszahlen zwischen zwei Zahlenwerten. Und ja ich habe schon die Suchfunktion benützt und bin auf einige Ergebnisse gekommen, aber es hat nichts geklappt. Ich will eine Zahl zwischen 30 und 150 und es wird immer eine Zahl im Bereich von einer Million zurückgegeben
. Ich hoffe mir kann jemand helfen hier ist der Quellcode:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define hoechste_zielzahl 150
#define niedrigste_zielzahl 30
unsigned int zz (unsigned int max)
{
unsigned int ergebnis = 0;
srand(time(0));
ergebnis = (rand() % ((max + 1) - 1)) + 1;
return ergebnis;
}
unsigned int zzm (unsigned int niedrigste_eingabe, unsigned int hoechste_eingabe)
{
unsigned int max = 0;
srand(time(0));
max = (rand() % ((hoechste_eingabe + 1) - niedrigste_eingabe)) + niedrigste_eingabe;
return max;
}
unsigned int zzz ()
{
unsigned int ziel = 0;
srand(time(0));
ziel = (rand() % ((hoechste_zielzahl + 1) - niedrigste_zielzahl)) + niedrigste_zielzahl;
return ziel;
}
unsigned int Computerzug (unsigned int max, unsigned int ziel, unsigned int Derzeit_zahl)
{
unsigned int ergebnis_zz, hoechste_eingabe, zw_ergebnis;
if ((max - ziel - Derzeit_zahl) < max)
{
return (max - Derzeit_zahl);
}
else for (zw_ergebnis = ziel; zw_ergebnis >= 0; zw_ergebnis = (ziel - (max + 1)))
if ((ziel - zw_ergebnis) == 0)
{
return zz (max); /* Eine Zufallszahl, die kleiner oder gleich max sein muss! */
}
else return zw_ergebnis;
}
int main()
{
unsigned int max = 0, ziel = 0, spieler_zug = 0, derzeit_zahl = 0, zugergebnis = 0, niedrigste_eingabe = 0, hoechste_eingabe = 0;
ziel = (unsigned int) zzz;
niedrigste_eingabe = ziel/10;
hoechste_eingabe = ziel/4;
max = zzm (niedrigste_eingabe, hoechste_eingabe);
printf ("%43s\n\n\n", "Arithmo");
printf ("%-45s%2u", " Hoechste Zahl, die man eingeben darf: ", max);
printf ("%25s%3u", "Zielzahl: ", ziel);
printf ("\n\n");
while (zugergebnis != ziel)
{
printf ("Bitte geben Sie eine Zahl von 1 bis %d ein: ", max);
scanf ("%d", spieler_zug);
if (spieler_zug > max || spieler_zug < 1)
continue;
}
return EXIT_SUCCESS;
}
Die ersten 3 Funktionen sollen Zufallszahlen zurückliefern. Der Code ist natürlich noch nicht fertig und das Wesentliche ist: In der Funktion zzz wird die Zufallszahl nicht richtig erstellt.
Ich habe ein Problem mit der Erstellung von Zufallszahlen zwischen zwei Zahlenwerten. Und ja ich habe schon die Suchfunktion benützt und bin auf einige Ergebnisse gekommen, aber es hat nichts geklappt. Ich will eine Zahl zwischen 30 und 150 und es wird immer eine Zahl im Bereich von einer Million zurückgegeben

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define hoechste_zielzahl 150
#define niedrigste_zielzahl 30
unsigned int zz (unsigned int max)
{
unsigned int ergebnis = 0;
srand(time(0));
ergebnis = (rand() % ((max + 1) - 1)) + 1;
return ergebnis;
}
unsigned int zzm (unsigned int niedrigste_eingabe, unsigned int hoechste_eingabe)
{
unsigned int max = 0;
srand(time(0));
max = (rand() % ((hoechste_eingabe + 1) - niedrigste_eingabe)) + niedrigste_eingabe;
return max;
}
unsigned int zzz ()
{
unsigned int ziel = 0;
srand(time(0));
ziel = (rand() % ((hoechste_zielzahl + 1) - niedrigste_zielzahl)) + niedrigste_zielzahl;
return ziel;
}
unsigned int Computerzug (unsigned int max, unsigned int ziel, unsigned int Derzeit_zahl)
{
unsigned int ergebnis_zz, hoechste_eingabe, zw_ergebnis;
if ((max - ziel - Derzeit_zahl) < max)
{
return (max - Derzeit_zahl);
}
else for (zw_ergebnis = ziel; zw_ergebnis >= 0; zw_ergebnis = (ziel - (max + 1)))
if ((ziel - zw_ergebnis) == 0)
{
return zz (max); /* Eine Zufallszahl, die kleiner oder gleich max sein muss! */
}
else return zw_ergebnis;
}
int main()
{
unsigned int max = 0, ziel = 0, spieler_zug = 0, derzeit_zahl = 0, zugergebnis = 0, niedrigste_eingabe = 0, hoechste_eingabe = 0;
ziel = (unsigned int) zzz;
niedrigste_eingabe = ziel/10;
hoechste_eingabe = ziel/4;
max = zzm (niedrigste_eingabe, hoechste_eingabe);
printf ("%43s\n\n\n", "Arithmo");
printf ("%-45s%2u", " Hoechste Zahl, die man eingeben darf: ", max);
printf ("%25s%3u", "Zielzahl: ", ziel);
printf ("\n\n");
while (zugergebnis != ziel)
{
printf ("Bitte geben Sie eine Zahl von 1 bis %d ein: ", max);
scanf ("%d", spieler_zug);
if (spieler_zug > max || spieler_zug < 1)
continue;
}
return EXIT_SUCCESS;
}
Die ersten 3 Funktionen sollen Zufallszahlen zurückliefern. Der Code ist natürlich noch nicht fertig und das Wesentliche ist: In der Funktion zzz wird die Zufallszahl nicht richtig erstellt.