[Anfänger] If Else einbindung



  • Hey zusammen. Ich bin gerade dabei mir ein kleines Quiz zu schreiben. Funktioniert bisher wunderbar alles so wie ich es möchte. Nur ich habe eine Problem. Ich möchte das man während des Quiz durch eingabe von Beenden die Consolen anwendung schließen kann. Das Quiz ist in 4 Teile aufgeteilt die ich durch voids aufgeteilt habe. Jedes Quiz 1 Void. nach eingabe einer falschen antwort wird eine while schleife aufgelöst die dann zum starten eines neuen quit dient. Spirch eingabe 1-4 oder erneute abfrage. Bei eingabe von Beenden schliest sich das Programm. Nur ich möchte das man während der Fragen selbst auch Beenden kann. Dann seine Richtigen antworten bekommt und sich dann das Programm Beendet.

    Hier 1 Void des Quiz sowie den rest der main.

    Quiz

    void quiz() //Allgemeinwissen
    {
    	setlocale(LC_ALL, "German");//Hiermit können umlaute in der Konsole wiedergegeben werden.
    	string run;//String zum Starten des Programms
    	int eingabe;//Variable für Antworten
    	int rant = 0;//Anzahl der richtigen Antworten
    	int differenz = 0;//Variable für die Zeitmessung
    	time_t start = time(0);
    	system("COLOR 6");
    
    		cout << "\n";
    		cout << "Frage 1: Was ist die größte Stadt Deutschlands?\n";
    		cout << "1: Berlin\n";
    		cout << "2: Hamburg\n";
    		cout << "3: Köln\n";
    		cout << "\n";
    		cin >> eingabe;
    
    		if (eingabe == 1)
    		{
    			cout << "Das war Richtig!\n";
    			rant++;
    
    			cout << "\n";
    			cout << "Frage 1: Wie lautet das Fremdwort für Festplatte?\n";
    			cout << "1: USB\n";
    			cout << "2: Harddrive\n";
    			cout << "3: MIC\n";
    			cout << "\n";
    			cin >> eingabe;
    
    			if (eingabe == 2)
    			{
    				cout << "Das war Richtig!\n";
    				rant++;
    
    				cout << "\n";
    				cout << "Frage 2: Wer erfand den Revolver?\n";
    				cout << "1: Henry Ford\n";
    				cout << "2: Albert Einstein\n";
    				cout << "3: Samuel Colt\n";
    				cout << "\n";
    				cin >> eingabe;
    
    				if (eingabe == 3)
    				{
    					cout << "Das war Richtig!\n";
    					rant++;
    
    					cout << "\n";
    					cout << "Frage 3: Was ist Roulette?\n";
    					cout << "1: Ein Glücksspiel\n";
    					cout << "2: Eine Automarke\n";
    					cout << "3: Ein Tanzstyl\n";
    					cout << "\n";
    					cin >> eingabe;
    
    					if (eingabe == 1)
    					{
    						cout << "Das war Richtig!\n";
    						rant++;
    
    						cout << "\n";
    						cout << "Frage 4: Wo lebten die Inkas?\n";
    						cout << "1: Nigeria\n";
    						cout << "2: Peru\n";
    						cout << "3: Indien\n";
    						cout << "\n";
    						cin >> eingabe;
    
    						if (eingabe == 2)
    						{
    							cout << "Das war Richtig!\n";
    							rant++;
    
    							cout << "\n";
    							cout << "Frage 5: Wann wurde die UNO gegründet?\n";
    							cout << "1: 1935\n";
    							cout << "2: 1950\n";
    							cout << "3: 1945\n";
    							cout << "\n";
    							cin >> eingabe;
    
    							if (eingabe == 3)
    							{
    								cout << "Das war Richtig!\n";
    								rant++;
    
    								cout << "\n";
    								cout << "Frage 6: Wie nennt man eine Reitsport Mannschaft?\n";
    								cout << "1: Horde\n";
    								cout << "2: Crew\n";
    								cout << "3: Gilde\n";
    								cout << "\n";
    								cin >> eingabe;
    
    								if (eingabe == 2)
    								{
    									cout << "Das ist Richtig!\n";
    									rant++;
    
    									cout << "\n";
    									cout << "Das Quiz ist hier jetzt leider zuende.\nVielen dank das du es bis zu Ende durchgespielt hast\n";
    									cout << "Um zu sehen wie viele Fragen du Richtig beantwortet hast\n";
    									system("PAUSE");
    									cout << "\n";
    								}
    							}
    						}
    					}
    				}
    			}
    		}
    		else
    		cout << "Tut mir leid, Das war Falsch. Du hast " << rant << " Fragen Richtig beantwortet.\n";
    		cout << "Um die Anwendung zu schließen 'Beenden' eingeben\n";
    		time_t end = time(0);
    		differenz = end - start;
    		cout << "Du hast " << differenz << " Sekunden mit diesem Quiz verbracht\n";
    }
    

    Main

    int main()
    {
    	setlocale(LC_ALL, "German");//Hiermit können umlaute in der Konsole wiedergegeben werden.
    	string run;//String zum Starten des Programms
    	cout << "Willkommen zu meinem kleinen Quiz.\nDu hast die möglichkeit zwischen folgenden Themen zu Wählen:\n";
    	cout << "\n";
    	cout << "1. Allgemeinwissen\n";
    	cout << "2. Geschichte\n";
    	cout << "3. Die Welt der Stars (Beinhaltet noch keine Fragen)\n";
    	cout << "4. Kopfrechnen\n";
    	cout << "\n";
    	cout << "Wenn du das Quiz beenden willst gib einfach die 'Beenden' ein.\n";
    	cout << "Zum Antworten einfach die Zahl der Antwort eingeben.\n";
    	cout << "Alle Eingaben bitt mit der Taste 'Enter' bestätigen\n";
    	cin >> run;
    
    	if (run == "Allgemeinwissen" || run == "1")
    	{
    		quiz();
    	}
     else if (run == "Geschichte" || run == "2")
     {
    	 quiz2();
     }
     else if (run == "Stars" || run == "3")
     {
    	 quiz3();
     }
     else if (run == "Kopfrechnen" || run == "4")
     {
    	 quiz4();
     }
     //Nach Falscher Antwort
     while (1)
     {
    	 cout << "1. Allgemeinwissen\n";
    	 cout << "2. Geschichte\n";
    	 cout << "3. Die Welt der Stars (Beinhaltet noch keine Fragen)\n";
    	 cout << "4. Kopfrechnen\n";
    	 cout << "\n";
    	 cout << "Bitt wähle zwischen 1 und 4.\n";
    	 cin >> run;
    
    		 if (run == "1")
    		 {
    			  quiz();
    		 }
    		 if (run == "2")
    		 {
    			 quiz2();
    		 }
    		 if (run == "3")
    		 {
    			 quiz3();
    		 }
    		 if (run == "4")
    		 {
    			 quiz4();
    		 }
    		 if (run == "Beenden")
    		 {
    			 return(0);
    		 }
     }
    	main();
    }
    


  • Du hast keine "voids", sondern Funktionen. Funktionen können etwas zurück liefern (z.B. int, std::string, ...). Das sieht so aus:

    int f()
    {
      ...
      return 42;
    }
    

    Eine Funktion, die nichts liefert, verwendet void:

    void f()
    {
       ...
       return;
    }
    

    main darf im Programm niemals selbst aufgerufen werden.

    Zu deinem genannten Problem:
    Du müsstest in deinen Funktionen "Beenden" erkennen, das Ergebnis ausgeben und dann entweder das Programm mit exit beenden oder die Funktionen ein entsprechendes Ergebnis zurück liefern lassen, auf das du dann reagierst.



  • Ganz verstehe ich das nicht.
    Um mal auf mein Code einzugehen. ich habe ja eine If abfrage. Dort wird die Antwort 1-3 abgefragt. Also entweder 1 2 oder 3. Bei Eingabe der richtigen Antwort wird die nächste frage ausgegeben. Bei Eingabe Einer Falschen Antwort kommt das else infrage welches dann die benötigte Zeit sowie die richtigen Antworten angibt. Danach tritt die while schleife inkraft wo abgefragt wird welche Kategoeir man als nächtes Spielen möchte. Wie genau kann ich jetzt sagen das wenn man anstatt 1-3 Beenden eingibt das Programm sich beendet. Wie könnte ich das aufbauen?

    Und Entschuldigung für den falschen Ausdruck. Versuche mir das ganze grade mit Learning by doing beizubringen und ehrlich gesagt weis ich nicht genau wie das heißt was ich tue 🙂



  • Homiophat schrieb:

    Und Entschuldigung für den falschen Ausdruck.

    Es ist mir völlig egal, wie du dich ausdrückst. Dein Problem ist aber, dass du nicht wirklich verstanden hast, worum es geht.

    Homiophat schrieb:

    Versuche mir das ganze grade mit Learning by doing beizubringen und ehrlich gesagt weis ich nicht genau wie das heißt was ich tue 🙂

    Eben. Besorge dir eine gutes Buch (Suchfunktion benutzen!), sonst wirst du scheitern.



  • Homiophat schrieb:

    Versuche mir das ganze grade mit Learning by doing beizubringen und ehrlich gesagt weis ich nicht genau wie das heißt was ich tue 🙂

    Bevor Du versuchst, Dir C++ beizubringen, versuche es doch erst mal mit der deutschen Rechtschreibung. Und wenn Du das so einigermassen drauf hast, dann fängst Du an, ein geeigneten C++-Buch durch zu arbeiten. Wenn Du dann noch Fragen hast, kannst Du prima diese beiden Sachen hier im Forum kombinieren.



  • int main()
    {
    
    	char run;
    	std::string eingabe;
    
    	int differenz;
    	time_t start = time(0);
    	system("Color B4");
    
    	std::cout << "*****EIN QUIZ*****\n";
    	std::cout << "******************\n";
    	std::cout << "Bitte Waehle ein Themengebiet\n";
    	std::cout << "\n\n[1]Allgemeinwissen\n[2]Geschichte\n[3]NocheinThemengebiet\n[4]NocheinThemengebiet\n[E]Ende";
    	std::cin >> run;
    
    	switch (run)
    	{
    	case '1':QuizAllg(); break; 
    	case '2':; break;
    	case '3':; break;
    	case '4':; break;
    	case 'e':;
    	case 'E':std::cout <<  "Ende!!!! "; break;
    	}
    	time_t end = time(0);
    	differenz = end - start;
    	std::cout << "Du hast " << differenz << "Sekunden mit dem Quiz verschwendet ;)\n";
    
    	std::getchar();
    	return 0;
    }
    
    void QuizAllg()
    {
    	char wahl = 0;
    	int punkte = 0;
    	std::cout << "Frage 1: Was ist die größte Stadt Deutschlands?\n";
    	std::cout << "1: Berlin\n";
    	std::cout << "2: Hamburg\n";
    	std::cout << "3: Köln\n";
    	std::cout << "E: ENDE";
    	std::cout << "\n";
    	std::cin >> wahl;
    	switch (wahl)
    	{
    	case '1': std::cout << "Richtig"; punkte++; break;
    	case '2': std::cout << "Falsch";; break;
    	case '3': std::cout << "Falsch";; break;
    	case 'E':
    	case 'e': std::cout << "Ende und du hast " << punkte << " Punkte"; break;
    	default: std::cout << "Fehlerhafte Eingabe";
    	}
    	if (wahl != 'e' || wahl != 'E')
    	{
    		std::cout << "Frage 2: Frage 2: Wer erfand den Revolver?\n";
    		std::cout << "1: Henry Ford\n";
    		std::cout << "2: Albert Einstein\n";
    		std::cout << "3: Samuel Colt\n";
    		std::cout << "E: ENDE";
    		std::cout << "\n";
    		std::cin >> wahl;
    		switch (wahl)
    		{
    		case '1': std::cout << "Falsch";; break;
    		case '2': std::cout << "Falsch";; break;
    		case '3': std::cout << "Richtig "; punkte++; break;
    		case 'E':
    		case 'e': std::cout << "Ende und du hast " << punkte << " Punkte"; break;
    		default: std::cout << "Fehlerhafte Eingabe";
    		}
    	}
    	if (wahl != 'e' || wahl != 'E')
    	{
    		std::cout << "Frage 3: Was ist Roulette?\n";
    		std::cout << "1: Ein Glücksspiel\n";
    		std::cout << "2: Eine Automarke\n";
    		std::cout << "3: Ein Tanzstyl\n";
    		std::cout << "E: ENDE";
    		std::cout << "\n";
    		std::cin >> wahl;
    		switch (wahl)
    		{
    		case '1': std::cout << "Richtig "; punkte++; break;
    		case '2': std::cout << "Falsch";; break;
    		case '3': std::cout << "Falsch";; break;
    		case 'E':
    		case 'e': std::cout << "Ende und du hast " << punkte << " Punkte"; break;
    		default: std::cout << "Fehlerhafte Eingabe";
    		}
    	}
    	std::cout << " Ende und du hast " << punkte << " Punkte\n";
    }
    

    so wäre zumindest das mit dem beenden in einer beliebigen frage kein problem


Log in to reply