Prog geht sofort aus

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Prog geht sofort aus

    Hi,

    ich bin beim Programmieren noch ein Anfänger :D.
    Deshalb hab ich ein Problem.
    Wenn ich bei diesem Prog:
    #include <iostream>
    using namespace std;

    int main()
    {
    int Zahleingabe;
    int Doppel;

    cout << "Bitte geben Sie eine Zahl ein!" << endl;
    cin >> Zahleingabe;
    Doppel = Zahleingabe * 2;
    cout << "Das Doppelte dieser Zahl ist "
    << Doppel << "." << endl;
    }


    eine Zahl eingebe geht das Programm sofort aus.
    Ich weiß das ist für bestimmt das einfachste Prrogramm der Welt aber trozdem
    stell ich diese Frage :D

    und noch was
    Ich will ein Programm machen wo man erst ein Passwort eingeben musst
    Ich habs mal so Probiert (ich weiß da is was falsch aber was oder wie kann man das besser machen?)
    #include <cstdlib>
    #include <iostream>
    #include <string>

    using namespace std;

    int main()
    {
    string Passwort;
    bool Pass;

    cout << "Bitte geben Sie das Passwort ein!" << endl;
    cin >> Passwort;
    system("Pause");

    if (cin==Passwort)
    {
    Pass = true
    }

    if (cin!=Passwort)
    {
    void exit()
    }
    }


    Ghosty

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Ghosty ()

  • probier mal ein cin.flush() vor dem eigentlichen cin

    Quellcode

    1. #include <iostream>
    2. using namespace std;
    3. int main()
    4. {
    5. int Zahleingabe = 0; //Niemals undefiniert lassen!
    6. int Doppel = 0;
    7. cout << "Bitte geben Sie eine Zahl ein!" << endl;
    8. cin.flush();
    9. cin >> Zahleingabe;
    10. Doppel = Zahleingabe * 2;
    11. cout << "Das Doppelte dieser Zahl ist " << Doppel << "." << endl;
    12. return 0; //wo ist denn das return geblieben?
    13. }
    Alles anzeigen


    und beim anderen kann ich nur sagen, speicher den input erstmal in einer Variable.
    Mir fällt bei so einem leichten Beispiel leider kein vernünftiger Grund ein, aber machs einfach.
    Mein Programmierinstnkt sagt, das man das nicht direkt vergleichen sollte.
    Hab mal ein wenig ausgebessert und kommentiert

    Quellcode

    1. #include <cstdlib>
    2. #include <iostream>
    3. #include <string>
    4. using namespace std;
    5. int main()
    6. {
    7. string Passwort = "";
    8. string Passwort2 = ""; //Oh, ich sehe undefinierte Variablen! Böse Fehlerquelle
    9. bool Pass = false;
    10. cout << "Bitte geben Sie das Passwort ein: "; //sollte so besser aussehen
    11. cin >> Passwort;
    12. system("Pause"); //Zum testen OK, sonst tabu!
    13. cin >> Passwort2;
    14. if(Passwort == Passwort2)
    15. {
    16. Pass = true; //Semikolon nicht vergessen!
    17. }
    18. else //Das macht man mit else, was anderes als true oder false kann bei == eh net rauskommen
    19. {
    20. exit(); //warum void? und warum exit? "return" würde in dem fall doch reichen
    21. }
    22. return 0; //hier fehlt es auch! main hat nicht den wert void, also MUSS ein return kommen, dein compiler sollte eigentlich schimpfen!
    23. }
    Alles anzeigen


    Hoffe ich habe jetzt selbst keine Fehler reingebracht. Code ist von meiner Seite ungetestet!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von pocky ()

  • Pocky du irrst:

    Quellcode

    1. #include <iostream>
    2. using namespace std;
    3. int main()
    4. {
    5. int Zahleingabe = 0; //Niemals undefiniert lassen!
    6. int Doppel = 0;
    7. cout << "Bitte geben Sie eine Zahl ein!" << endl;
    8. cin.flush(); // Dies ist weder bei C noch bei C++ im Standard, nur Microsoft-Compiler können das - siehe MSDN
    9. cin >> Zahleingabe;
    10. Doppel = Zahleingabe * 2;
    11. cout << "Das Doppelte dieser Zahl ist " << Doppel << "." << endl;
    12. return 0; // return brauch nur, wenn nicht 0 zurückgegeben wird !
    13. }
    Alles anzeigen

    Zum return -> ausser nach int main() muss das allerdings nach jeder andern Funktion.
    Die modernen Compiler gehen davon aus, das, wenn am Ende int main() keine return-Zeile steht, return 0 da gesetzt werden soll.

    Ach ja warum dein Programm aus geht - du führst das unter der falschen Umgebung aus ;) Starte das Progrmm direkt aus der Console oder aus einer IDE die die Console aufruft und du wirst sehen was Windows dir nicht zeigt ;)

    MfG bcc-fan
  • Ja ich weiß dass ich leichtsinsfehler mache bin aber noch anfänger.
    Trozdem vielen Danke für die Hilfe :D.
    Aber irgendwas hab ich wieder falsch gemacht :(.

    #include <cstdlib>
    #include <iostream>
    #include <string>
    using namespace std;

    int main()
    {
    string Passwort = "a";
    string Passwort2 = "a";
    bool Pass = false;

    cout << "Bitte gib das Passwort ein!" ;
    cin >> Passwort;
    cout << "Bitte wiederhole das Passwort!" ;
    cin >> Passwort2;

    if (Passwort == Passwort2)
    {
    Pass = true;
    cout << "Super" ;
    return 0;
    }
    else
    {
    return 0;
    }
    return 0;
    }


    Ghosty

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Ghosty ()

  • Ohne es zu testen find ich jetzt keinen fehler, müsste eigentlich funktionieren

    allerdings solltest du da andere werte bei den returns nehmen, z.B. 1 bei erfolg und -1 (oder was anderes) bei falschem passwort. So können andere Programme die das Programm aufgerufen haben erfahren wie das Programm beendet wurde
    Return 0; bedeutet normal fehlerfreies normales Beenden des Prgramms (wenn man das so definieren kann). In dem Fall kann dein Programm allerdings eh NIE 0 ausgeben

    Noch ein Tipp:

    Wenn du Code postest, ist unter dem Textfeld ein Tab da steht "syntax" drauf, und da ist "C & C++", nimm bitte das um Code zu posten