Visual Studio 2005 C++ do/while Schleife wiederholen bei Falsch Eingabe Buchstaben



  • Hmm, das sollte aber eigentlich klappen (bei mir ist das auch so). Poste bitte mal den genauen Code, den du aktuell verwendest. Ich hatte vorhin schon die leise Vermutung, dass du den Code abgetippt oder in mehreren Phasen kopiert hast. Du hattest z.B. bei "int tarif" das abschließende Semikolon vergessen (=>kompiliert nicht). Deshalb kopier bitte mal den ganzen Code in einem Rutsch per C&P, ok? Und bitte benutze Code-Tags, um die Sache lesbarer zu gestalten.



  • C++ Forumbot schrieb:

    Dieser Thread wurde von Moderator/in Unix-Tom aus dem Forum MFC (Visual C++) in das Forum C++ verschoben.

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

    Dieses Posting wurde automatisch erzeugt.

    Gabs schon 1000 Mal, die Frage.
    Antwort z.B. hier.

    @matze_: while((c = fgetc(stdin) != '\n') && c != EOF); //Eingabepuffer leeren : So macht man es besser nicht.



  • Hallo Matze und Taychon!

    Matze deine Lösung funktionert nicht.
    Du hast recht Taychon , es geht so nicht.

    Vielleicht kann ja einer hier direkt mal ne lösung posten! 😃



  • Tachyon schrieb:

    Gabs schon 1000 Mal, die Frage.
    Antwort z.B. hier.

    Ein bischen wirst Du Dich ja wohl selbst durchlesen können.



  • Dell0600 schrieb:

    Matze deine Lösung funktionert nicht.

    Nein. Meine Lösung funktioniert angeblich bei dir nicht, das ist ein Unterschied. Außerdem glaube ich dir das nicht, du wärst der erste...

    Vielleicht kann ja einer hier direkt mal ne lösung posten!

    Meinst du das ernst? Sei nicht so faul...



  • Wir haben mit 2 Leuten deinen Link ausprobiert , da steht leider keine funktionierende Lösung drin.

    if( !(std::cin >> tarif) )
    {
    std::cin.clear();
    std::cin.ignore(std::numeric_limitsstd::streamsize::max(), '\n');
    }

    geht nicht.

    Da war die Idee von _matze doch besser , den bei ihm lief das Programm nicht dauernd neu an. Es hat lediglich die Auswahl nicht mehr funktioniert.

    Aber Trozdem Danke Tachchong!



  • Ok, ist das jetzt schon der nächste registierte Troll heute? Hör mal, Tachyons Lösung funktioniert mit Sicherheit, daran besteht kein Zweifel (falls du es richtig gemacht hast), hab ich auch schon ausprobiert. 🙄



  • Hallo Matze und Tachyang!

    Ihr seid bestimmt freunde und das ist ja auch ok , nur muss man hier keinen verteidigen weil eine Antwort nicht funktioniert , ich habe mich ja auch schon dafür bedankt, also so ist es ja nicht.

    Es soll doch hier um´s wesentliche gehen und da habe ich echt nicht viel von euch bekommen , es bringt mir ja nichts wenn einer sagt schau mal da der link da steht was , dann kann er doch sofort sagen er weiß es nicht. Ist genau so wenn ich den Lehrer frage: wie geht das ? und er sagt schau mal ins Buch da steht alles.

    Ich habe schon sämtliche Seite durch gesucht aber nichts gefunden was funktioniert.

    Stimmt brauche ich vielleicht noch ne Libiry? habe ja nur folgende:

    #include <iostream>

    ????



  • Probier das mal:

    #inlude <boost/troll.hpp>
    //...
    boost::troll::detector detector(Thread_Opener);
    if(detector.is_troll())
    {
        boost::troll::moster_slayer slayer;
        slayer.kill(Thread_Opener);
    }
    else
    {
        std::cout << "The detector is broken\n";
    }
    


  • Für Tachyons Lösung (merk dir den Namen mal) brauchst du ja mindestens noch den Header <limits>, soweit ich aus dem Kopf weiß, eventuell noch weitere. Heißt das, du kannst das Programm mit diesem Code nicht mal kompilieren? Sowas musst du uns sagen. Nochmal: "funktioniert nicht" ist keine Fehlerbeschreibung. Außerdem ist es schon seltsam, dass du unsere Ratschläge ignorierst, wo du doch Hilfe willst (denn das fällt dann schwer). Beispielsweise habe ich dich gebeten, deinen aktuellen, kompletten Code zu posten...

    Wenn du wissen willst, welche Header für eine Funktion o.ä. benötigt werden, dann sieh hier nach:

    http://www.msdn.com

    Das sollte sowieso deine erste Anlaufstelle sein, wenn du programmieren lernen willst.



  • Tachyon schrieb:

    Probier das mal:

    #inlude <boost/troll.hpp>
    //...
    boost::troll::detector detector(Thread_Opener);
    if(detector.is_troll())
    {
        boost::troll::moster_slayer slayer;
        slayer.kill(Thread_Opener);
    }
    else
    {
        std::cout << "The detector is broken\n";
    }
    

    😃 👍



  • _matze schrieb:

    http://www.msdn.com
    Das sollte sowieso deine erste Anlaufstelle sein, wenn du programmieren lernen willst.

    Besser ist imo das hier.

    Ansonsten hast Du völlig recht, vor allem, was die Fehlerbeschreibung betrifft.



  • Tachyon schrieb:

    Probier das mal:

    #inlude <boost/troll.hpp>
    //...
    boost::troll::detector detector(Thread_Opener);
    if(detector.is_troll())
    {
        boost::troll::moster_slayer slayer;
        slayer.kill(Thread_Opener);
    }
    else
    {
        std::cout << "The detector is broken\n";
    }
    

    sähr gut! allerdings sollte das ding MT laufen bei der horrenden anzahl an trollen die sich derzeit hier so herum treiben.



  • Dann nochmal neu!
    Also nochmal zum mitschreiben , mein Problem ist , das ich folgenden Programabschnitt:

    #include <iostream>

    using namespace std;

    int main (void)

    {
    int tarif; // Tarifauswahl

    do
    {
    cout << " Tarif Auswahl:\n----------------------------------------\n " << endl;
    cout << " (1) Timeline\n (2) Powerline 10\n (3) Powerline 60\n (4) Powerline 100\n (5) Powerline 200\n----------------------------------------\n" << endl;
    cout << "Eingabe:";
    cin >> tarif; // Eingabe des Tarif

    } while (tarif<=0 || tarif>=6);

    system ("pause"); //
    return 0;

    Der Andere Teil des Programm ist unwichtig es geht nur darum wenn ich die Zahl 1, 2, 3, 4 oder 5 eingebe soll der gewünschte Tarif ausgewählt werden. Dasklappt ja , es geht mit jetzt nur darum wenn ich irgend welche Buchstaben eingebe z.b : sadfsdffd dann Soll das Programm sagen cout: Eingabe ist falsch bitte neu eingeben. Was es im moment aber nicht macht und es dauernd neustartet und keine eingabe mehr möglich ist. Also bitte nur noch antworten wenn es auch ernst gemeint ist!



  • jetzt mal im Ernst. Das ist jetzt schon dein x-ter Beitrag hier. Ist dir schon aufgefallen, dass alle anderen brav die code-tags verwenden??? Das sieht nich tnur netter aus, sondern macht dein Posting auch lesbar... Benutze doch bitte "edit" und schreib deinen Code zwischen [ c p p ] und [ / c p p ] (Leerzeichen läßt du natürlich weg). Alternativ kannst du aber auch gerne den C/C++ Knopf verwenden



  • Zum letzten Mal: dein Problem ist, das du den Eingabepuffer leeren musst. Wir haben dir 2 Möglichkeiten genannt, die (korrekt umgesetzt) beide funktionieren, egal was du behauptest. Und arbeite mal an deiner Sprache: mit "dauernd neustarten" meinst du z.B., dass ein erneuter Schleifendurchlauf stattfindet. Du bist dann einfach besser zu verstehen...

    Ich weiß gar nicht, warum ich dir noch antworte... und das tue ich nun auch nicht mehr. Falls du es tatsächlich doch ernst meinst, dann tut es mir leid, aber ich habe für sowas heute keine Nerven mehr... 🙄


Anmelden zum Antworten