Zufallszahl geht nicht....
-
Hi @ all,
würde gerne eine Zufallszahl x (x > 0 und x < 1000) ausgeben, weiß
aber nicht, wie ich das RAND_MAX einbinden soll....
leider funzt die Suchfunktion noch nicht, sonst hätt ich mir darüber weitergeholfen....#include <stdlib.h> #include <stdio.h> #include <time.h> int main() { int i; //RAND_MAX(1000); srand( (unsigned)time( NULL ) ); /* Display 10 numbers. */ for( i = 0; i < 10;i++ ) printf( " %6d\n", rand() ); return 0; }
Danke leute
-
für deinen speziellen fall:
rand()%1000
oder allgemein:
rand()% MAX
-
jo jetzt klappt es,
nun würd ich aber gerne ne Abfrage machen, das ich an ne eingegebene Zahl
annähere.
Also :
1. Eingabe von x
2. rand()%1000
3. if zufallsz aus (rand()%1000) > x, mach neue zahl mit (rand()%(zufallsz bis 1000)
4. else if zufallsz aus (rand()%1000) < x, mach neue zahl mit (rand()%(0 bis keine ahnung)also wie gesagt, der soll per zufall ne gesuchte zahl rausfinden und diese dann zum schlus ausgeben....
richten soll er sich jenachdem ob die generierte zahl > x oder < x ist, und dementsprechend den rahmen anpassen...
wie geschieht sowas ??Ich hoffe ich nerv euch nicht
-
hier noch mein bisheriger code
#include <stdlib.h> #include <stdio.h> #include <time.h> void main( void ) { int i=0, gesucht; printf("An welche Zahl soll angenaehert werden?\n"); printf("x: "); scanf("%d", &gesucht); srand( (unsigned)time( NULL ) ); while (rand()%1000 != gesucht) { printf(" %6d ", rand()%1000); } printf("\n %6d ", rand()%1000); }
-
Not_registered schrieb:
while (rand()%1000 != gesucht) { printf(" %6d ", rand()%1000); }
Oh ha
Im Bedingungsteil der while-schleife wird eine andere Zahl generiert als in der printf-ausgabe. Also Wert in Var speichern und dann hantieren.
Deine Eingabezahl müsste demnach auch von 1-1000 sein, denn sonst kannst du dich
ja mit Zufallszahlen von 1-1000 niemals annähern ;).Deine Programmbeschreibung hast du ja schon, sieht doch schon fast wie ein PAP aus :). Einfach in C umsetzen!
void main (void) ist in ANSI C unzulässig!
Es heisst int main(int argc, char *argv[])
-
@curry-king
int main(void) ist genauso zulässig!Wichtig ist eigentlich nur, dass ein int vor main steht und kein void
-
Jo habs nun so gemacht...
#include <stdlib.h> #include <stdio.h> #include <time.h> void main( void ) { int gesucht, zufall; printf("An welche Zahl soll angenaehert werden?\n"); printf("x: "); scanf("%d", &gesucht); srand( (unsigned)time( NULL ) ); while (zufall != gesucht) { zufall = rand()%1000; printf("%d ", zufall); } printf("\n\ngesuchte Zahl: %d\n", zufall); }
das void main(void) stand so in der hilfe drinne....
aber wie bekomme ich das nun hin, das sich an die eingegebene zahl angenähert wird...
eingabe = 45
rand()100 erzeugt 50
da 50 > 45 neue rand()(von 100-50)oder wenn sie kleiner ist, halt andersrum.... ??
-
Hier nochmal die ganze Aufgabe....
Erraten Sie eine ganze positive Zahl x, für die gilt (1 <= x <= 1000).Beliebig viele Versuche,nach dem Raten erhalten Sie eine Rückmeldung, ob die gesuchte Zahl größer oder kleiner oder gleich der gesuchten zahl ist.Schreiben sie ein programm, der die gesuchte zahl mit dem Minimum an Versuchen ermittelt. Wieviele Versuche braucht ihr Programm im worst case ??
-
Ist doch einfach:
Machen wir es mal langsam mit 1-100 also 100 Zahlen:
die gesuchte zahl ist 12
Warum du zufall brauchst ist mir da vollkommen unklar.
im prinzip ist das ne binäre suche:
wir halbieren den gesuchten bereich:
100/2 == 50
F: ist es 50?
A: nein, weniger
wir wissen: wertebereich 1-49
50/2 == 25
F: ist es 25?
A: nein, weniger
F: ist es 12?
A: jaund schon gefunden
nix zufall.