• Aktualisierte Forenregeln

    Eine kleine Änderung hat es im Bereich Forenregeln unter Abschnitt 2 gegeben, wo wir nun explizit darauf verweisen, dass Forenkommentare in unserer Heftrubrik Leserbriefe landen können.

    Forenregeln


    Vielen Dank

schleife mit c++

Red-Rat1

Stille/r Leser/in
Registriert
12.08.2004
Beiträge
17
Reaktionspunkte
0
hi
ich wollte mal so zum spaß ein einfaches quiz programmieren.
jetzt hab ich aber ein kleines problem, denn ich möchte dass wenn jemand etwas falsch macht, dass er es dann so oft wieder versuchen kann bis er es schafft!!!! doch das mit den schleifen funzt da net so richtig!!!

#include <iostream.h>
#include <string.h>

char name[50];
char zahl[]="12";
char zahl1[50];

int main()

{
cout<<"\nHallo wie heisst du??\n";
cin.get(name,49);
cin.ignore(80,'\n');

cout<<"\nServus "<< name << "!!!!.Willkommen bei meinem Quiz!!! Moechtest du mitspielen??? Ja\noder nein??\n";
cin.get(ja,49);
cin.ignore(80,'\n');


result=strcmp(ja,ja1);

if (result==0)
{cout<<"Sehr gute entlscheidung!!\n";

cout<<"\nErste Frage: Wie viel ist 3*4 ??\n";
cin.get(zahl1,49);
cin.ignore(80,'\n');

result1=strcmp(zahl,zahl1);

if (result1==0)

{cout<<"\nSuper rechnen kannst du!!\n";}


else {cout<<"Schade das war leider falsch versuche es nocheinmal\n";

// hier möchte ich dann gerne die schleife haben dass er es so oft probieren kann bis er es hat};


return 0;

}


Danke für eure Hilfe
 
bool answer = false;
while(!answer) {
// hier alles was zur frage gehört

if (result1==0) {
cout << "\nSuper rechnen kannst du!!\n";
answer = true;
}

// was sonst noch zur frage gehört
}
 
Des funktionier überhaupt nicht!!! Der schreibt mir immer 4 Fehler Meldungen!!
 
Also wenn du weder die Fehlermeldungen noch die dazugehörigen Zeilen postest, kann dir nur schwer geholfen werden... %-)
 
Aso sorry.......


Quiz.cpp(104) : error C2446: '<' : Keine Konvertierung von 'char *' in 'int'
Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat

Quiz.cpp(104) : error C2040: '<' : 'int' unterscheidet sich von 'char [3]' in bezug auf die Anzahl vorgenommener Dereferenzierungen

Quiz.cpp(106) : error C2143: Syntaxfehler : Fehlendes ';' vor '}'

//Das hier verstehe ich sowie so nicht weil ich vor jeder } einen ; habe


Quiz.cpp(112) : error C2181: Ungueltiges 'else' ohne zugehoeriges 'if'
Fehler beim Ausführen von cl.exe.

Quiz.obj - 4 Fehler, 0 Warnung(en)


Uns so hab ich des verstanden mit dem Quellcode.......


#include <iostream.h>
#include <string.h>

char name[50];
char zahl[]="12";
char zahl1[50];



cout<<"\nHallo wie heisst du??\n";
cin.get(name,49);
cin.ignore(80,'\n');

cout<<"\nServus "<< name << "!!!!.Willkommen bei meinem Quiz!!! Moechtest du mitspielen??? Ja\noder nein??\n";
cin.get(ja,49);
cin.ignore(80,'\n');


result=strcmp(ja,ja1);



if (result==0)
{cout<<"Sehr gute entlscheidung!!\n";

{cout<<"\nErste Frage: Wie viel ist 3*4 ??\n";
cin.get(zahl1,49);
cin.ignore(80,'\n');};

result1=strcmp(zahl,zahl1);

bool answer = false;
while(!answer) { cout<<"Wie viel ist 3*4 ??\n";}


if (result1==0)

{cout<<"\nSuper rechnen kannst du!!\n";
answer = true;}

else {cout<<"Schade das war leider falsch versuche es nocheinmal\n";}
 
Red-Rat1 am 29.05.2005 11:05 schrieb:
if (result==0)
{cout<<"Sehr gute entlscheidung!!\n";
Hier fehlt die schliessende Klammer für das Blockstatement.
Tipp: wenn du eh nur ein Statement brauchst, lass doch den Block weg, dann wird das ganze ein wenig übersichtlicher, und solche Klammer-vergessen-Fehler passieren weniger.


{cout<<"\nErste Frage: Wie viel ist 3*4 ??\n";
cin.get(zahl1,49);
cin.ignore(80,'\n');};

result1=strcmp(zahl,zahl1);
Das hier scheint richtig zu sein, ausser das der Block wieder unnötig ist.


bool answer = false;
while(!answer) { cout<<"Wie viel ist 3*4 ??\n";}
Überleg dir mal, was hier passiert...
Der while-Loop wird solange ausgeführt, bis answer == true gilt. Kann das jemals true werden, wenn deine Schleife aus einem einzigen Output-Statement besteht?


if (result1==0)

{cout<<"\nSuper rechnen kannst du!!\n";
answer = true;}

else {cout<<"Schade das war leider falsch versuche es nocheinmal\n";}
Hier bringt's dir genau nichts mehr, answer auf true zu setzen, da das ja nachher eh nicht mehr geprüft wird.


=>

bool answer = false;
while(!answer) {
cout<<"Wie viel ist 3*4 ??\n";
cin.get(zahl1,49);
cin.ignore(80,'\n');};
result1=strcmp(zahl,zahl1);
if (result1==0) {c
cout<<"\nSuper rechnen kannst du!!\n";
answer = true;
} else cout<<"Schade das war leider falsch versuche es nocheinmal\n";
}
(Hoffe das ist jetz syntaktisch korrekt, hab einfach gecopypasted. ;-) )


Die anderen Fehler liegen vermutlich beim cin, da kann ich dir aber nicht weiterhelfen, da ich mit dem input-Stream nicht so gewandt bin.


edit: still missing the code-tag-feature.... :schnarch:
 
Zurück