Else if (Ganz einfach!)



  • Hallo! 🙂

    Das ist erst mein 2 Programm das ich geschrieben habe, ich habe es zum Spaß mal ausprobiert und bekomme es nicht richtig zu laufen da and der Stelle wo ich Frageb will was sein Liebling Fach ist einfach abstürtzt hoffe ihr könnt mir Helfen ! 🙂

    #include "stdafx.h"
    #include <iostream>
    using namespace std;
    
    int main(void)
    {
    
    	// Anfang //
    
    	cout << "Hallo Welt! " << endl
    		<< "Englich mal funktuniert was xD" << endl
    		<< "Was soll ich als erstes machen ? :/" << endl
    		<< "lass mal sehen" << endl
    		<< "wie alt bist du den ? :" << endl;
    
    	// Alter nachfrage //
    
    	int alter3;
    	cin >> alter3;
    	cout << "Also bist du : " << alter3 << " Jahre alt ?" << endl
    		<< "Das ist super, bin genauso alt xD" << endl
    		<< "Sag mal.." << endl;
    
    	// Schulfächer //
    
    	int chose;
    	cin >> chose;
    	cout << "Welche Fecher magst du den so ? :\n" << endl;
    
    	cout << "1 - Mathe" << endl
    		<< "2 - Englisch" << endl
    		<< "3 - Sport" << endl
    		<< "4 - Deutsch" << endl;
    
    	if (chose == 1)
    		cout << "Wirklich? ich dachte Mathe mag keiner :p" << endl;
    
    	else if (chose == 2)
    		cout << "Englisch ist Toll aber schwer zu lernen !" << endl;
    
    	else if (chose == 3)
    		cout << "Sport mögen fast alle, du gehört auch zu denen ! :p" << endl;
    
    	else if (chose == 4)
    		cout << "Deutsch ist nicht so Toll meiner meinung nach :/" << endl;
    	else
    		cout << "Ist dein liebling Fach nicht dabei, schade :/" << endl;
    
    	return 0;
    }
    

  • Mod

    Da stürzt garantiert nichts ab. Möglicherweise drückst du dich nur doof aus? Beschreibe, was du tust, was du erwartest, und was stattdessen passiert.



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum MFC (Visual C++) in das Forum C++ (alle ISO-Standards) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Vielleicht wäre es schlau, erst eine Frage zu stellen und dann die Eingabe zu lesen?



  • SeppJ schrieb:

    Da stürzt garantiert nichts ab. Möglicherweise drückst du dich nur doof aus? Beschreibe, was du tust, was du erwartest, und was stattdessen passiert.

    Okey, dann nochmal genauer.

    - Ich erstellte ein neues Projekt.
    - Und wählte "Windows konsolenanwendung" aus.
    - Schrieb meinen Programm.
    - Ich starte das Programm nicht im Debug modus.
    - Dann wird geschrieben in der "CMD" Box.

    cout << "Hallo Welt! " << endl
    		<< "Englich mal funktuniert was xD" << endl
    		<< "Was soll ich als erstes machen ? :/" << endl
    		<< "lass mal sehen" << endl
    		<< "wie alt bist du den ? :" << endl;
    

    - Danach fragt das Programm nach dem Alter.
    - Das gab ich ein.
    - Dann wird geschrieben ... mit dem davor geschriebenen Alter.

    int alter3;
    	cin >> alter3;
    	cout << "Also bist du : " << alter3 << " Jahre alt ?" << endl
    		<< "Das ist super, bin genauso alt xD" << endl
    		<< "Sag mal.." << endl;
    

    Soweit alles gut aber dann wollte ich das, das Programm nachfrägt welche Fächer du den magst und dann dazu die passende Antwort aber wenn man 1,2,3,4 als Antwort möglichkeiten eingibt schließt sich einfach das Programm.

    if (chose == 1)
    		cout << "Wirklich? ich dachte Mathe mag keiner :p" << endl;
    
    	else if (chose == 2)
    		cout << "Englisch ist Toll aber schwer zu lernen !" << endl;
    
    	else if (chose == 3)
    		cout << "Sport mögen fast alle, du gehört auch zu denen ! :p" << endl;
    
    	else if (chose == 4)
    		cout << "Deutsch ist nicht so Toll meiner meinung nach :/" << endl;
    	else
    		cout << "Ist dein liebling Fach nicht dabei, schade :/" << endl;
    
    	return 0;
    

    Hoffe es ist passend genug.
    Und ich hoffe ihr könnt mir helfen!. 😋



  • R3uploaded schrieb:

    schließt sich einfach das Programm.

    Ja, klar. Das Programm ist ja auch zu Ende. Konsolenprogramme sind dazu da, aus einer Konsole aufgerufen zu werden, da kann man dann auch die Ergebnisse sehen.


  • Mod

    Deine IDE hat sicher auch einen Modus, ein Programm zu Testzwecken in einer Konsole auszuführen, da sollte das Ergebnis deinen Erwartungen entsprechen. Du scheinst Visual Studio zu nutzen, da ist das (ich kann's gerade leider nicht nachgucken) afaik irgendeine Tastenkombination mit F5, CTRL+F5 glaube ich.

    PS: Wie dir ja schon erklärt wurde, hat dein Programm sich einfach nur normal beendet. Als "Absturz" eines Programms bezeichnet man normalerweise etwas, dass eine Meldung vom Betriebssystem kommt, dass das Programm eine ungültige Aktion durchführen wolle. Etwas in dieser Art. Daher musste nach deiner ursprünglichen Beschreibung erst von uns nachgefragt werden, bevor klar wurde, was du tatsächlich beobachtet hast.



  • SG1 schrieb:

    R3uploaded schrieb:

    schließt sich einfach das Programm.

    Ja, klar. Das Programm ist ja auch zu Ende. Konsolenprogramme sind dazu da, aus einer Konsole aufgerufen zu werden, da kann man dann auch die Ergebnisse sehen.

    Aber warum ist es den zuende ?
    Sollte man nicht zuerst die Antwort sehen und dann würde da stehen "Drücken sie eine beliebige Taste"



  • SeppJ schrieb:

    Deine IDE hat sicher auch einen Modus, ein Programm zu Testzwecken in einer Konsole auszuführen, da sollte das Ergebnis deinen Erwartungen entsprechen. Du scheinst Visual Studio zu nutzen, da ist das (ich kann's gerade leider nicht nachgucken) afaik irgendeine Tastenkombination mit F5, CTRL+F5 glaube ich.

    PS: Wie dir ja schon erklärt wurde, hat dein Programm sich einfach nur normal beendet. Als "Absturz" eines Programms bezeichnet man normalerweise etwas, dass eine Meldung vom Betriebssystem kommt, dass das Programm eine ungültige Aktion durchführen wolle. Etwas in dieser Art. Daher musste nach deiner ursprünglichen Beschreibung erst von uns nachgefragt werden, bevor klar wurde, was du tatsächlich beobachtet hast.

    Das mit dem "Abstutzt" war wohl ein bisschen Falsch.
    Ich kenne leider keinen Modus wo man es in der Console ausführ 😕

    An der Stelle wo gefragt wird welche Fächer man mag steht da schon drann "Drücken sie eine beliebige Taste" aber warum ? es ist doch noch nicht zu ende, man muss ja schließig eine Antwort geben oder habe ich was Falsch gemacht 😕

    Trotzdem Danke für die Hilfe!.



  • fdsa2 schrieb:

    SG1 schrieb:

    R3uploaded schrieb:

    schließt sich einfach das Programm.

    Ja, klar. Das Programm ist ja auch zu Ende. Konsolenprogramme sind dazu da, aus einer Konsole aufgerufen zu werden, da kann man dann auch die Ergebnisse sehen.

    Aber warum ist es den zuende ?

    Weil das Ende von main() erreicht wurde.

    Sollte man nicht zuerst die Antwort sehen

    Die Antwort sieht man doch. Mitunter (wenn man das Programm falsch startet) nur ganz kurz.

    und dann würde da stehen "Drücken sie eine beliebige Taste"

    Also mich würde das extrem nerven.



  • SG1 schrieb:

    fdsa2 schrieb:

    SG1 schrieb:

    R3uploaded schrieb:

    schließt sich einfach das Programm.

    Ja, klar. Das Programm ist ja auch zu Ende. Konsolenprogramme sind dazu da, aus einer Konsole aufgerufen zu werden, da kann man dann auch die Ergebnisse sehen.

    Aber warum ist es den zuende ?

    Weil das Ende von main() erreicht wurde.

    Sollte man nicht zuerst die Antwort sehen

    Die Antwort sieht man doch. Mitunter (wenn man das Programm falsch startet) nur ganz kurz.

    und dann würde da stehen "Drücken sie eine beliebige Taste"

    Also mich würde das extrem nerven.

    Achso 🙂

    Jetzt habe ich es verstanden und ein bisschen ausprobiert und es hat auch geklappt da ich am ende eine Variable angelegt habe.

    Aber wie kann man das verhindern? Also das man die Antwort sieht und dann eine Taste drücken muss um die "Cmd Box" zu beenden ?.



  • asdasd schrieb:

    SG1 schrieb:

    fdsa2 schrieb:

    SG1 schrieb:

    R3uploaded schrieb:

    schließt sich einfach das Programm.

    Ja, klar. Das Programm ist ja auch zu Ende. Konsolenprogramme sind dazu da, aus einer Konsole aufgerufen zu werden, da kann man dann auch die Ergebnisse sehen.

    Aber warum ist es den zuende ?

    Weil das Ende von main() erreicht wurde.

    Sollte man nicht zuerst die Antwort sehen

    Die Antwort sieht man doch. Mitunter (wenn man das Programm falsch startet) nur ganz kurz.

    und dann würde da stehen "Drücken sie eine beliebige Taste"

    Also mich würde das extrem nerven.

    Achso 🙂

    Jetzt habe ich es verstanden und ein bisschen ausprobiert und es hat auch geklappt da ich am ende eine Variable angelegt habe.

    Aber wie kann man das verhindern? Also das man die Antwort sieht und dann eine Taste drücken muss um die "Cmd Box" zu beenden ?.

    Oder besser gesagt : Kann man machen das sich die "Cmd Box" nicht beendet?.



  • weasdad2 schrieb:

    Oder besser gesagt : Kann man machen das sich die "Cmd Box" nicht beendet?.

    Ja.
    Du musst CMD vorher öffnen (die Konsole starten) und darin dann dein Programm aufrufen.

    Oder nochmal schauen, was SeppJ gepostet hat: https://www.c-plusplus.net/forum/p2543476#2543476



  • weasdad2 schrieb:

    Oder besser gesagt : Kann man machen das sich die "Cmd Box" nicht beendet?.

    Öffne eine Konsole, navigiere in den Ordner, in dem sich Dein auszuführendes Programm befindet, und starte es ... 😕



  • Baue einfach eine Pause zum schluss ein.

    Die unschöne Variante:

    #include <windows.h> //brauchst du dazu
    
    system("pause>nul"); //Der Befehl für die Pause. >nul verhindert den "Bitte drücken Sie eine beliebige Taste" Text
    

    Der bessere Weg:

    cin.ignore(1000, '\n');
    cin.get();
    

    Achso, und falls du es nicht korrigiert hast:
    Du hast bei den Schulfächern erst das Einlesen von choose und dann gibst du die Frage nach den Schulfächern aus. Es wäre natürlich schlauer erst die Frage zu stellen und dann die Eingabe abzuwarten und einzulesen, so wie du es oben auch gemacht hast 😉



  • Zhavok schrieb:

    Baue einfach eine Pause zum schluss ein.

    Die unschöne Variante:

    #include <windows.h> //brauchst du dazu
    
    system("pause>nul"); //Der Befehl für die Pause. >nul verhindert den "Bitte drücken Sie eine beliebige Taste" Text
    

    Der bessere Weg:

    cin.ignore(1000, '\n');
    cin.get();
    

    Achso, und falls du es nicht korrigiert hast:
    Du hast bei den Schulfächern erst das Einlesen von choose und dann gibst du die Frage nach den Schulfächern aus. Es wäre natürlich schlauer erst die Frage zu stellen und dann die Eingabe abzuwarten und einzulesen, so wie du es oben auch gemacht hast 😉

    Danke ! Das hat super gekappt vielen Dank ! 🙂



  • Zhavok schrieb:

    Baue einfach eine Pause zum schluss ein.

    Das ist aber der falsche Weg.

    Ein Konsolenprogramm, ist ein Konsolenprogramm.



  • Naja, aber was soll man sonst machen? Schon wenn du mur Hallo Welt ausgibt schließt sich das Fenster wenn du nur die exe öffnest und das nicht über die Konsole machst. Und wenn du wenigstens sehen willst, was du als Ausgabe zurückbekommst denke ich ist ne pause nicht verkehrt. Ne Verweilzeit gänge auch. Ich denke, dass es für einen Anfänger nicht so schlimm ist. Oder wie seht ihr das?



  • Wenn die gesamte Ausgabe in die Konsole gelegt wird, ist es schon gut zu wissen, wie man sie offen halten kann, wenn das Programm eigentlich beendet.
    Zwar kann man die Ausgaben auch in eine Datei leiten, aber dort landen nur die reinen Asciis. Keine Farben und keine Animation.
    Hier gehts wohl etwas spitzfindig um das tatsächliche Ende eines Programm. Wenn es sich nach Tastendruck dann auch beenden soll, schreibt man danach natürlich keine weitere Abfrage mehr.

    In CodeBlocks ist es standard eingestellt, das am Ende des Konsolenprogramm eine Abfrage gestellt wird.
    Wenn man fertig ist, startet man es natürlich meistens außerhalb von CodeBlocks und dann gibt es auch die automatische Abfrage nicht mehr.



  • Zhavok schrieb:

    Naja, aber was soll man sonst machen?

    Man soll NICHT die Leute gängeln, die ein Programm wie vorgesehen aufrufen.

    Schon wenn du mur Hallo Welt ausgibt schließt sich das Fenster wenn du nur die exe öffnest und das nicht über die Konsole machst.

    Ja, wenn man es falsch macht, dann ist das halt scheisse.

    Ich denke, dass es für einen Anfänger nicht so schlimm ist. Oder wie seht ihr das?

    Gerade für einen Anfänger ist es schlimm, sich falsche Muster anzugewöhnen.


Log in to reply