Array2



  • Weiß jemand wo mein Fehler liegt?



  • crazybaby schrieb:

    Wenn ihr mir nicht sagt was ich falsch mache lerne ich ja auch nichts.

    Du bekommst doch ständig gesagt, was du falsch machst. Dein "Lernansatz" ist falsch. Du weißt scheinbar überhaupt nicht, was du tust. Rumprobieren mit Null Ahnung ist extrem uneffektiv, wenn du C++ lernen willst.

    crazybaby schrieb:

    Weiß jemand wo mein Fehler liegt?

    Welcher Fehler denn? Soll ich die letzte Version erst selbst kompilieren und die Ausgabe mit dem vergleichen, was bei Deiner Aufgabenstellung erwartet wird? Warum sollte ich mir die Mühe machen, wenn du dir selbst keine Mühe machst?



  • crazybaby schrieb:

    Könnt ihr mir nicht sagen was ich in dem programm einbauen könnte , damit das programm überpruft ob der nutzer maximal
    20 Werte eingibt.

    Hallo crazybaby,

    Zunächst solltest Du den Benutzter dazu bringen, die Anzahl der Zahlen wie gewünscht einzugeben. Nach Deiner Anforderung soll die Anzahl zwischen 1 und 20 liegen. Das ist gar nicht so trivial. Ich poste Dir jetzt einfach mal meine Lösung.

    Dazu wird zunächst mal das erste druckbare Zeichen gelesen (Variable char c ). Ist es =='q', so kann man das Programm abbrechen - diese Freiheit sollte man seinem User immer geben. Ist es kein 'q', so kommt das Zeichen zurück in den Stream ( cin.putback(c) ) und anschließend wird versucht eine Zahl zu lesen. Gelingt dies und liegt sie im erwarteten Bereich wird die Schleife abgebrochen und alles ist gut. Im anderen Fall wird das evt. gesetzte Fehlerflag im Stream gelöscht ( cin.clear() ) und der Rest der Zeile überlesen ( cin.ignore( numeric_limits< streamsize >::max(),'\n') ). Dann beginnt das ganze von vorn.

    #include <iostream>
    
    int main()
    {
        using namespace std;
        cout << "Bitte Zahl zwischen 1 und 20 eingeben (Abbruch mit 'q')\n";
        int zahl;
        bool ok = true;
        for( char c; ; cin.clear(), cin.ignore( numeric_limits< streamsize >::max(), '\n' ) ) // skipline
        {
            if( !(cin >> c) || c == 'q' )
            {
                ok = false; // Merker für 'Abbruch' setzen
                break;
            }
            if( cin.putback(c) >> zahl && zahl >= 1 && zahl <= 20 )
                break;
            cout << "versuchen Sie es nochmal .." << endl;
        }
    
        // --   Abspann
        if( ok )
        {
            cout << "Die Zahl war " << zahl << endl;
        }
        else
        {
            cout << "Abbruch" << endl;
        }
        return 0;
    }
    

    :xmas2: Werner


Anmelden zum Antworten