If-Verzweigung
-
Hallo
Bin recht neu hier und auch in C/C++ ein Neuling. Ich beschäftige mich seit ca. einem Monat damit. Heute wollte ich mein erstes Programm programmieren, auf Win 32 Konsole. Es sollte ein Quiz werden, aber irgendetwas geht immer schief. Ich bin schon halb am verzweifeln.
Also, ich wollte ein kleines Quiz für meine Freunde machen.
Aber nicht nach dem Schema:"Bitte auswählen:"
Sondern, dass der Anwender selbst die Antwort ganz ohne Auswahlmöglichkeit eintippen soll. Die Eingabe soll über If überprüft werden. So sieht meine cpp-Datei aus:#include <iostream>
#include <string>
using namespace std;int main()
{string antwort;
cout << "Was ist 10 plus 10?";
cin >> antwort;if (antwort == 20)
{
cout << endl << "Richtig!" << endl;
}
else
{
cout << endl << "Falsch!" << endl;}
return 0;
}Bitte wundert euch nicht alzu sehr, wenn die Datei absoluter Programmierschrott ist. Ich bin nun echt 3 Stunden dranngesessen und hab fast alles ausprobiert. Dabei erschien mir dieser Code noch am besten.
Für Hilfe wäre ich sehr dankbar
Ich bin echt am Verzweifeln[ Dieser Beitrag wurde am 31.08.2002 um 14:34 Uhr von Holy editiert. ]
-
hmm was ist die frage??
du musst übrigens mit einem string vergleichen
#include <iostream> #include <string> using namespace std; int main() { string antwort; cout << "Was ist 10 plus 10?"; cin >> antwort; if (antwort == "20") //hier { cout << endl << "Richtig!" << endl; } else { cout << endl << "Falsch!" << endl; } return 0; }
-
Juhuu es geht
Vielmals dank. Das man da Anführungszeichen hin machen muss, hätte ich nie gewusst. Ist aber logisch
-
Du solltest die "Speicherform" je nach Frage aussuchen. z.B: Wann war das -> int (Int = Ganze Zahlen denn Jahr = Ganzzahl) oder wenn ein Wort verlangd wird eben Strings.
(Von Anfänger zu Anfänger ;))
-
Hmm, jetzt hätte ich noch eine Frage. Jetzt kann ich zwar endlich Zahlne und Wörter einbauen, aber gibts da auch nen Code, um mehrere Wörter einzubauen. Beispielsweise so:
if (antwort == "Ein Test") //<----Hier
{
cout << endl << "Richtig!" << endl;
}Ja, ich weis schon. Eigentlich ist das Quiz für Wörter bestimmt. Darum auch mit string. Als leichtes Beispiel machte ich aber ausversehen eine Zahl rein.
[ Dieser Beitrag wurde am 31.08.2002 um 15:31 Uhr von Holy editiert. ]
-
Du könntest die Antwort mit einem anderen String vergleichen lassen.
string antwortrichtig ="Ein Test";
if (antwort == antwortrichtig) //<----Hier
{
cout << endl << "Richtig!" << endl;
}
-
Hmm, nö geht leider nicht. Mit einem Wort ja aber sobald es 2 sind gehts nimmer.
-
nimm mal stadt cin
getline(cin,antword);
-
hmm? wo muss ich das einsetzten? Habs ein paar mal überall getestet, aber der mag irgendiwe das Wort antword nicht
-
#include <iostream>
#include <string>
using namespace std;int main()
{string antwort;
cout << "Was ist 10 plus 10?";
getline(cin,antwort);string antwordrichtig = "hallo du";
if (antwort == antwordrichtig) //hier
{
cout << endl << "Richtig!" << endl;
}
else
{
cout << endl << "Falsch!" << endl;}
return 0;
}einzugeben ist hallo du
-
Juhuu es geht. Man muss eben zwei mal Enter drücken aber das ist ja nicht so wild
Vielmals Dank
-
Original erstellt von Holy:
Juhuu es geht. Man muss eben zwei mal Enter drücken aber das ist ja nicht so wildMusst du Bugfixen und dich bei Hume bedanken!
-
Musst du Bugfixen und dich bei Hume bedanken!
Bugfixen reicht
-
@HumeSikkins: Magst du es nicht, wenn man sich bei dir bedankt? Ist eher ungewöhnliches Verhalten.
-
Bugfixen? Was meint Ihr damit? Den Fehler finden der drinn ist?
Ähm ja, sorry, dass ich Euch schon wieder nerven muss, aber ich habe nun etwa das selbe Problem, wie vorher.
#include <iostream> #include <string> using namespace std; int main() { string antwort1; string antwort2; cout << "Frage"; cout << endl; cout << "Antwort: "; getline(cin,antwort1); // hier kommt die Antwort hin. Also mal a string antwordrichtig1 = "a"; if (antwort1 == antwordrichtig1) { cout << "Richtig! Nächste Frage cout << "Frage"; cout << endl; cout << "Antwort: "; getline(cin,antwort2); //Hier die abgeänderte Variable string antwordrichtig2 = "b"; if (antwort2 == antwordrichtig2) //hier ist das Problem. { cout << "Richtig"; cout << "Frage"; } else { cout << endl << "Falsch!\a" << endl; }
Und zwar komm ich am Anfang der "If-Bedingung" nicht weiter. Ich habe die Variable etwas geändert, damit nicht das gleiche Ergebniss wie in Frage 1 eingegeben werden muss.
Aber jetzt geht es nimmer.
Frage 1 geht, aber Frage 2 nicht mehr. warum? Ich sehe den Felher nicht[ Dieser Beitrag wurde am 31.08.2002 um 19:48 Uhr von Holy editiert. ]
[ Dieser Beitrag wurde am 31.08.2002 um 20:27 Uhr von Holy editiert. ]
-
Die Dateien die in der .zip-Datei enthalten sind kopierst du alle in dein MSVC-Verzeichnis in den Ordner "Include". "Alle Ersetzen" drücken und fertig.
Danach frisch kompilieren, und schon musst du nicht mehr zweimal Enter drücken.
MfG SideWinder
-
Hmm danke, auch wenn ich nicht weis was das war
Naja, bis jetzt hab ichs noch nicht getestet, weil ich da ja noch ein größeres Problam habe.
-
Hi Holly wer hat den nicht schon ein Quiz gemacht???
Ich hab auch schon einz gemacht. Der Code ist aber etwas "unordentlich"Nach 2-3 Mal versteht man ihn. Er gibd sogar Punktzahl aus:
//headdatein #include <iostream.h> //Funktion die Wutzeln berechnet float wurzelziehen(float zahl) { double wurzel = 100; for(int i=0;i!=1000;++i) { wurzel = 0.5*(wurzel + (zahl / wurzel)); } return wurzel; }; //Haupprogramm int main() { int punkte =0; //punkte auf null setzen cout <<"Hi was ist 9 * 9 ????"<< endl; int zahl; cin >> zahl; if(zahl == 81){ cout <<"Richtig!!!! hehe"<<endl; punkte = punkte + 1; } else //wenn falsch { cout <<"Falsch heehee!!!"<<endl; cout <<"Richtig ist " << 9*9 << " du dummi!!!"<<endl; } cout<<"was ist die Wurzel von 81???"<<endl; double zahl2; cin >> zahl2; if(zahl2==wurzelziehen(81)) { cout <<"Richtig" <<endl; punkte = punkte + 1; } else { cout <<"Falsch"<<endl; cout <<"Richtig ist" << wurzelziehen(81) <<"!!!"<<endl; } cout<<"was ist die Wurzel von 45???"<<endl; cin >> zahl2; if(zahl2==6.7082) { cout <<"Richtig" <<endl; punkte = punkte + 1; } else { cout <<"Falsch"<<endl; cout<<"Richtig währe " << wurzelziehen(45) <<"!!!"<<endl; } cout <<"Du hast "<< punkte <<" von 3 Punkten!!!"<<endl; cout <<"Nocheinmal 1 Beenden 0"<<endl; int auswahl; cin >> auswahl; if(auswahl==1) { main(); } return 0; } Ich hab es aber nur mit Zahlen gemacht. Kannst ihn ja ausbauen!(Mach ma und dann schreibs)
-
Cool danke, jetzt weis ich, wie ich das so anlegen muss. Ein paar Bugs sind drin
return 0;
Fehlt hinter den falschen Antworten *g*
aber egal, meines ist sowieso viel schlimmer. Jetzt verabschiedet sich sogar schon Visual Studio von mir *heul*Ich habe versucht, den Code etwas zu vereinfachen um Schritt für Schritt aufzubauen. Dabei hab ich das Programm etwas gestuzt, kompiliert und dann hat das Programm mir gesagt "fatal error..." und hat sich verabschiedet.
Bin ich so schlimm?Hier mein Code:
//headdatein #include <iostream> #include <string> using namespace std; //Haupprogramm int main() { int punkte =0; //punkte auf null setzen int antwort1; cin >> antwort1; if(antwort1 == 1){ cout << "ok1"; } else //wenn falsch { int antwort2; cin >> antwort2; if(antwort2==2) cout << "ok2"; { } else { int antwort3; cin >> antwort3; if(antwort3==3) cout << "ok3"; { } else { } int antwort4; cin >> antwort4; if(antwort4==4) cout << "ok4"; { } return 0; }
Ich wollte den Code anfangs so simpel wie möglich machen und dann verreckt mir auch noch der Compiler, oh man, guter Start für einen Newbie
-
NEIN! Es geht. ich hab nochmal alles überprüft und mit deinem verglichen und dann den Rest aus diesem Topic zusammengestellt. JUHUUU
Es geht! Ich habe ein Programm programmiert, mein erstes Programm, juhuuu...