Zufallszahl erraten --> Gelöst
-
Hey, ich hab die aufgabe ein programm zu schreiben, dass Zufallszahlen generiert und diese vom Benutzer errraten lässt
Das problem ist, das mein programm immer angibt, dass die eingegebene Zahl zu groß ist...# include <stdlib.h> # include <stdio.h> # include <time.h> int main() { int iSecret; int Zahl; printf( "Erraten Sie die Zahl die der Computer sich ausgedacht hat\n"); srand ( time(NULL) ); iSecret = rand() % 10 + 1; for(; ; ) { fflush( stdin); scanf( "d%", &Zahl); if( Zahl != iSecret) { if( Zahl < iSecret) { printf( "Diese Zahl war leider zu klein...\n"); continue; } else( Zahl > iSecret); { printf( "Diese Zahl war leider zu gross...\n"); continue; } } else( Zahl == iSecret); { printf( "Richtig geraten!!!\n"); break; } } system("pause"); }
wenn jemand ne idee hat worans liegen könnt, sagts bitte bescheid...
lg Flo
-
in zeile 37 musst du "else if(Zahl==iSecret)" schreiben
-
In Zeile 20 muss es
scanf ("%d", &Zahl);
heißen.Zu Zeile 14:
Bei Zufallszahlen die Modulo-Funktion zu benutzen ist nicht gut, da die "Zufälligkeit" dadurch beeinträchtigt wird. Siehe ZufallsgeneratorZu Zeile 19:
fflush (stdin);
führt zu undefiniertem Verhalten. Siehe fflush (stdin)
-
player4245 schrieb:
in zeile 37 musst du "else if(Zahl==iSecret)" schreiben
ok, habs geändert
gibt leider immer noch "diese zahl war leider zu gorß" aus
-
ZockerFloh7 schrieb:
player4245 schrieb:
in zeile 37 musst du "else if(Zahl==iSecret)" schreiben
ok, habs geändert
gibt leider immer noch "diese zahl war leider zu gorß" ausIn Zeile 37 reicht ein einfaches
else
:... else { printf( "Richtig geraten!!!\n"); break; } ...
Dasselbe gilt für Zeile 30.
-
im scanf ist % und d vertauscht, und dann ist die abfragelogik mist. machs etwa so:
... if( Zahl < iSecret) printf( "Diese Zahl war leider zu klein...\n"); else if( Zahl > iSecret) printf( "Diese Zahl war leider zu gross...\n"); else { printf( "Richtig geraten!!!\n"); break; } ...
^^wenn nicht kleiner dann vielleicht grösser. wenn beides nicht, dann: treffer.
-
deine abfrage sieht mal total abenteuerlich und auch fehlerhaft aus: hinter else steht weder eine bedingung noch ein semikolon.
Außerdem: es gibt ja nur drei möglichkeiten, daher kannst du dir die verschachtelung sparen.if(...) // zu klein else if(...) // zu groß else // passt!
-
erikkk schrieb:
deine abfrage sieht mal total abenteuerlich und auch fehlerhaft aus: hinter else steht weder eine bedingung noch ein semikolon.
Außerdem: es gibt ja nur drei möglichkeiten, daher kannst du dir die verschachtelung sparen.if(...) // zu klein else if(...) // zu groß else // passt!
sorry, bin totaler anfänger
habs am anfang au nich verschachtelt gehabt, aber da hats nich funktioniert, dann hab ich mir gedacht probier ichs mal anders...
muss man hinter else ein semikolon machen?
-
Basher schrieb:
im scanf ist % und d vertauscht, und dann ist die abfragelogik mist. machs etwa so:
... if( Zahl < iSecret) printf( "Diese Zahl war leider zu klein...\n"); else if( Zahl > iSecret) printf( "Diese Zahl war leider zu gross...\n"); else { printf( "Richtig geraten!!!\n"); break; } ...
^^wenn nicht kleiner dann vielleicht grösser. wenn beides nicht, dann: treffer.
oh, lol
hab mir schon gedacht dass des mit dem scanfe irgendwie komisch aussieht
hab die abfragelogik vorher so gehabt, habs dann bloß umgebaut, weils nich gegangen ist...
danke für die hilfe
-
ZockerFloh7 schrieb:
muss man hinter else ein semikolon machen?
Nein.
-
ZockerFloh7 schrieb:
muss man hinter else ein semikolon machen?
Nein.
-
Jut, dann danke an alle
ging wirklich sehr schnell (nich mal 10 minuten) xD
-
ZockerFloh7 schrieb:
muss man hinter else ein semikolon machen?
nee, machste hinter if ja auch nicht
if (a < b); mach_was();
^^ falsch: if macht nix, mach was kommt immer dran
if (a < b) mach_was();
^^ richtig: mach_was() ist bestandteil der if-anweisung
if (a < b) mach_was(); mach_nochwas();
^^ falsch: beim ; ist die anweisung zuende
if (a < b) { mach_was(); mach_nochwas(); } // <-- kein semikolon
^^ richtig: if bezieht sich auf das ganze {...}