Else if (Ganz einfach!)



  • 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.



  • Zhavok schrieb:

    Naja, aber was soll man sonst machen?

    Eine Konsole öffnen und das Konsolenprogramm darin starten 🙄

    Zhavok schrieb:

    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?

    Kann man so machen. Dann isses halt Kacke.



  • @Zhavok
    Du kannst auch einen Breakpoint kurz vor Ende deines Programms setzen.
    Dann musst du am Programm nix ändern und es schliesst sich trotzdem nicht "von selbst" wenn du es direkt aus der IDE raus startest.



  • Ja. Ich verstehe euch schon, hätte nur gedacht, dass das am Anfang nicht so wild ist. Sogar in meinem C++ buch steht, dass wenn man nicht will, dass sich das Programm schließt, man die Pause welche ich als zweites geschrieben habe nutzen kann.



  • Ich finde das system( "pause" ) in Ordnung. Wenn Leute solche Fragen stellen schreiben sie meist Übungsprogramme, die ausser ihnen niemand auf der Welt sieht. Und wenn es jemanden stört, dass er zum Beenden dieses Programms noch ein Mal eine Taste drücken muss dann soll er sich erst fragen, wie hoch die Wahrscheinlichkeit ist, dass er dieses Programm ausführen wird. Es wird dadurch nicht "Kacke" oder "Scheisse".

    Man sollte TE aber klarmachen, wie SYSTEM funktioniert, welche Auswirkungen und welche Nachteile es hat, damit er selber einschätzen kann, wann und ob er es braucht.


  • Mod

    Was spricht dagegen, einfach die von der Entwicklungsumgebung dafür vorgesehenen Mittel zu benutzen? Man nenne eine IDE, die keinen Konsolenmodus anbietet. Und wenn man keine IDE benutzt, ist man höchstwahrscheinlich sowieso auf der Konsole.



  • Zhavok schrieb:

    Sogar in meinem C++ buch steht, dass wenn man nicht will, dass sich das Programm schließt, man die Pause welche ich als zweites geschrieben habe nutzen kann.

    lol
    lollol
    lollollol

    Seinen Quellcode zu verunstalten nur weil man seine IDE nicht bedienen kann ist naiv und masochistisch.



  • Naja,wenn ich zum Beispiel für unseren Gameserver eine Anwendung schreibe, welche zum Beispiel die Banliste aussortiert und alte Bans löscht und am Ende möchte ich eine Nachricht: "x Einträge wurden gelöscht" ausgeben soll, dann könnte ich nun allen Leuten erklären, sie sollen die Datei in der Konsole ausführen. Aber ich glaube es ist einfacher am Ende die Pause anzuhängen. Vorallem weil man als einfacher PC Nutzer einfach wo drauf klicken will ohne noch etwas davor tun zu müssen. Ich habe auch schon viele Konsolenprogramme gesehen wo ich genau so eine Info am Schluss bekommen habe. Deshalb finde ich das nicht so schlimm. Wie DocShoe geschrieben hat, ist das Programm deswegen ja nicht gleich weniger gut. Und wer es in der Konsole öffnet wird über das einmal Enter drücken auch nicht enttäuscht sein. Würde ich jetzt das ein Programm schreiben, welches einfach etwas abarbeitet und dannach einfach zu ende ist, weil darauf vielleicht andere Programmaufrufe folgen, dann ziehe ich die Möglichkeit ohne Pause logischer Weise vor. Ich glaube aber um einfach mal zu sehen was die Konsole ausgibt ist das ok. Und ich denke er wird auch verstehen, dass eine Pause an manchen Programmenden nicht sinnvoll ist. Aber egal. Das kann ja jeder lösen wie er möchte.

    Achja und Wutz, natürlich kann man seinen ganzen Quellcode direkt in die Tonne werfen, weil am Ende eine Pause ist.


Anmelden zum Antworten