problem bei c++ (ärgeres anfängerproblem)
Killer00 19.02.2003 - 18:38 699 5
Killer00
Big d00d
|
Ich hab ein problem. es soll ein zahlerate spiel werden. nur ihrgendwas funktioniert noch nicht richtig. man soll den schwierigkeitsgrad wählen können (zwischen 1-100) je nach schwierigkeitsgrad wird eine zufalls zahl wischen 1-100 genommen die du dann erraten musst. der computer hilft dir nach jedem tip indem er dir sagt ob die zufallszahl größer oder kleiner ist. Nur das funktioniert was nicht. BITTE HERLF MIR. ich ertrete meinem compiler bald. #include <iostream.h> #include <conio.h> #include <stdlib.h> #include <dos.h> #include <stdio.h>
void main()
{ char zeichen; int SWG, zahl1, zahl2; do { clrscr(); printf("Herzlich willkommen beim Ratespiel"); sleep(2); getch(); clrscr(); printf("\n\n\nW„hlen sie eine Schwierigkeitsstufe von 1-100"); cin>>SWG;
randomize(); zahl2=rand()%SWG; zahl2=zahl2+1; }
while (SWG>100||SWG<1); { clrscr(); printf ("Ungltige Schwierigkeitsstufe, bitt eine Stufe zwischen 1-100 eingeben"); cin>>SWG; }
do { clrscr(); cout<<"Bitte geben sie ihren Tipp (Zahl von 1 bis "<<SWG<<") ein"; cin>>zahl1; }
while (zahl1>SWG); { clrscr(); printf("Ihr Tipp muss eine Zahl von 1-%d Sein!!!",SWG); printf("\n\n\nBitte eine gltige Zahl eingeben!!"); cin>>zahl1; }
if (zahl2==zahl1) { clrscr(); printf("Du hast richtig geraten!!"); cout<<"\n\n\nDie gesuchte Zahl war"<<zahl2; printf("\n\n\nNeuer Versuch? (J/N)"); zeichen=getche(); getche(); }
else {
clrscr(); printf("Ihr tipp war leider nicht richtig"); if (zahl1<zahl2)
{ cout<<"\n\n\nDie Zahl w„re gr”áer geweáen als"<<zahl1<<"gewesen. "; printf("\n\n\nVERSUCHS EINFACH NOCHMAL!!!");
} else if (zahl1>zahl2) { cout<<"\n\n\nDie Zahl w„re kleiner als "<<zahl1<<" geweáen"; printf("\n\n\nVERSUCHS EINFACH NOCHMAL!!!") ; } } while (zahl1!=zahl2);
while(zeichen=='j'); }
|
that
ModeratorHoffnungsloser Optimist
|
Ich hab ein problem. nur ihrgendwas funktioniert noch nicht richtig. Nur das funktioniert was nicht. BITTE HERLF MIR. ich ertrete meinem compiler bald. Entferne systematisch Codeteile und finde dadurch das Problem. Dann entferne das Problem.
|
atrox
in fairy dust... I trust!
|
in dem ding scheint es gleich an mehreren stellen sehr seltsame sprachkonstrukte zu geben, bei der die gruppierung darauf hindeutet, daß du sie anders meinst, als du sie hingeschrieben hast zb: do
{
clrscr();
cout<<"Bitte geben sie ihren Tipp (Zahl von 1 bis "<<SWG<<") ein";
cin>>zahl1;
}
while (zahl1>SWG);
{
clrscr();
printf("Ihr Tipp muss eine Zahl von 1-%d Sein!!!",SWG);
printf("\n\n\nBitte eine g?ltige Zahl eingeben!!");
cin>>zahl1;
}
man währe dazu verleitet, das while dem zweiten code-block zuzuordnen, was aber nicht der fall ist! es gibt entweder die fußgesteuerte schleife do <Anweisung> while (bedingung);oder die kopfgesteuerte while (bedingung) <Anweisung>dein konstrukt do {...} while (..); {...}
<-------1---------->
<--2-->
ist eine fußgesteuerte schleife (1) mit einem zusätzlichen codeblock (2) dahinter. ich glaub nicht, daß das so gemeint war. du hast das gleich mehrmals ähnlich verwendet.
|
atrox
in fairy dust... I trust!
|
PS: du weißt eh, daß es eine totsichere methode bei deinem spiel gibt, bei der man bei der schwierigsten spielstufe maximal 7 schritte braucht, um jede beliebiege zahl zu erraten ?
|
moidaschl
Vollzeit-Hackler
|
PS: du weißt eh, daß es eine totsichere methode bei deinem spiel gibt, bei der man bei der schwierigsten spielstufe maximal 7 schritte braucht, um jede beliebiege zahl zu erraten ? k 1) wenn du printf machst, dann mach auch scanf oder hald cin, cout ! 2) du hast unnötig bibliotheksdateien eingebunden! 3) welchen compiler hast du? 4) top-down methode anwenden ( ich hoff du weist was des is) 5) unterprogramme mit rückgabewerten erleichtern die lesbarkeit ( falls du die schon kannst! ) 6) mach immer nur teile und lass sie laufen.. wenn die gehn mach des nächste! du wirst sehn du kommst von alleine drauf!
|
Killer00
Big d00d
|
Hmmmm ok vielen dank für die tips. bin ein ziemlicher anfänger was C++ betrifft. Ich werd das ding jetzt von grundauf nochmal neu schreiben und dabei eure tips befolgen.
|