Anfänger - Programm funktioniert nicht!!!



  • Ich habe ein Programm geschrieben dass bei der Eingabe "Wer ist Petra", "Petra ist eine Nonne" ausgeben soll. Leider schließt sich das Programm sofort nach der Eingabe. Warum ? und wie kann ich das ändern ? Danke schonmal im voraus!
    hier der code:

    #include <iostream>
    #include <string>

    using namespace std;

    int main() {
    char zeichen = ' ';
    std::string eingabe, zeichenkette1, zeichenkette2, zeichenkette3, zeichenkette4, zeichenkette5, zeichenkette6, zeichenkette7;

    zeichenkette1 = "Was";
    zeichenkette2 = "Petra";
    zeichenkette3 = "Wer";
    zeichenkette4 = "ist";
    zeichenkette5 = "eine";
    zeichenkette6 = "Nonne";

    std::cin >> eingabe;
    if (eingabe == zeichenkette1 + zeichen + zeichenkette4 + zeichen + zeichenkette2);
    std::cout << zeichenkette2 + zeichen + zeichenkette4 + zeichen + zeichenkette5 + zeichen + zeichenkette6<< std::endl;

    getchar();
    getchar();
    return 0;
    }



  • Hallo

    Das Programm soll sich doch auch schliessen; wieso sollte es weiterhin offen sein, wenn es nichts mehr macht?
    Ein Fehler im Code ist, dass du mit operator>> einliest und dann prüfst, ob der eingelesene String Leerzeichen enthält. Das wird nie der Fall sein, da operator>> nur bis zum ersten Whitespace liest. Nutze stattdessen std::getline .

    Ferner, nutze Code-Tags, wenn du Code im Post einfügst: [code="cpp"][/code]

    LG



  • Ok hat geklappt. Danke!
    [code="cpp"] [/#include <iostream>
    #include <string>
    #include <sstream>

    using namespace std;

    int main() {

    std::string eingabe, zeichenkette1, zeichenkette2, zeichenkette3, zeichenkette4, zeichenkette5, zeichenkette6, zeichenkette7;

    zeichenkette1 = "Was";
    zeichenkette2 = "Petra";
    zeichenkette3 = "Wer";
    zeichenkette4 = "ist";
    zeichenkette5 = "eine";
    zeichenkette6 = "Nonne";
    std::cout << "Bitte stellen Sie eine Frage!";
    if (std::getline(std::cin, zeichenkette1 + zeichenkette4 + zeichenkette2));

    std::cout << zeichenkette2 << ' ' << zeichenkette4 << ' ' << zeichenkette5 << ' ' << zeichenkette6<< std::endl;

    getchar();
    getchar();
    return 0;
    }]



  • Das if hat keinerlei Auswirkung mit dem ; am Ende der Zeile.



  • Wenn du jetzt auch noch die unten im Editor stehenden Code tags benutzt, dann: 👍


Log in to reply