String - Mehrere Zahlen eingeben



  • #include <iostream>
    #include <limits>
    
    int main( void )
    {
    	int eingabe;
    	std::cout << "Bitte geben Sie einen Wert fuer die Anzahl der Zeilen ein:" << std::endl;
    	while(!(std::cin >> eingabe))
    	{
    		std::cout << "Falsche Eingabe, bitte geben Sie einen Wert fuer die Anzahl der Zeilen ein:" << std::endl;
    		std::cin.clear();
    		std::cin.ignore(std::numeric_limits<int>::max(),'\n');
    	} 
    }
    

    Was machst du? Bei mir funktioniert das ohne Fehler.



  • Dann hast du vielleicht was falsch abgetippt? Vergleich mal ganz genau bzw. mach sowas am besten immer per C&P.

    Vielleicht runde statt eckiger Klammern oder sowas...



  • Hab es sogar testweise kopiert aber er meckert dennoch oO



  • bmth schrieb:

    Hab es sogar testweise kopiert aber er meckert dennoch oO

    Welche Zeile wird denn angemeckert??? Das Prog von Guest1 läßt sich einwandfrei übersetzen.



  • Diese hier

    std::cin.ignore(numeric_limits<int>max(),'\n');
    

    Ja ich weiss die ist nicht 100% identisch mit dem Beispiel von Guest1. Wenn ich die Zeile jedoch so übernehme meckert er wiederrum an anderen Dingen (global namepsace etc. pp)

    Sprich der Fehler liegt jetzt nur noch bei der int Geschichte. Ist die Frage warum für ihn, trotz der Angabe, "int unexpected" ist oO

    Ich versteh es gerade ehrlich gesagt nicht. Aber vielleicht übersehe ich auch etwas oder so.



  • Wenn du "using namespace std" nicht notiert hast, funktioniert deine Zeile nicht. Dann müsstest du aber noch weitere Fehlermeldungen bekommen (ja?). Übernimm das Beispiel so, wie es da steht, dann müsste es klappen.

    Btw, du solltest immer alle Fehlermeldungen posten, und auch den genauen Fehlertext (keine eigene "Fehlertext-Umschreibung"), dann kann dir auch schneller und besser geholfen werden.



  • bmth schrieb:

    Diese hier

    std::cin.ignore(numeric_limits<int>max(),'\n');
    

    Da fehlen die Doppelpunkte.

    Ich habs jetzt mal so gemacht:

    using namespace std;
    int n = 3;
    	int zahlen[3] = {0};
    	cout << "Geben Sie " << n << " Zahlen ein: " << endl;
    
    	for( int i=0; i<n; i++ )
    	{
    		cout << "Zahl Nr. " << i+1 <<": ";
    		cin >> zahlen[i];
    
    		if (cin.fail() || cin.rdbuf()->in_avail() > 1)
    		{
    			cout << "Fehler in der Eingabe, Eingabe wiederholen!" << endl;
    			cin.clear(); 
    			cin.ignore(numeric_limits<int>::max(),'\n'); 
    			i--;
    		}
    	}
    


  • einles0r schrieb:

    Da fehlen die Doppelpunkte.

    Ach stimmt, war mir gar nicht aufgefallen. Und wieder: einfach per C&P rüberziehen, dann kann sowas nicht passieren!



  • Ist mir bewusst dass die da fehlen;) Hatte ich ja auch im vorherigen Post erwähnt 🙂

    Genau wie die namespace Thematik. Ich versuche jetzt noch mal 1, 2 Sachen und melde mich dann falls nötig noch mal :>



  • bmth schrieb:

    Ist mir bewusst dass die da fehlen;) Hatte ich ja auch im vorherigen Post erwähnt 🙂

    Ist dir denn auch bewusst, dass da 2 Dinge fehlen (fett markiert)?

    [cpp]
    std::cin.ignore(**std::numeric_limits<int>::**max(),'\n');
    [/cpp]



  • Ok ich versteh mein VS nicht. Nachdem es sich gerade verabschiedet hatte und ich es neugestartet habe läuft es jetzt. Dabei hatte ich abermals (!) das eine Beispiel getestet, genau wie vorher.

    Und zwar einmal mit den std:: Angaben und ohne und nach dem Restart klappte es dann. Ohne dass ich etwas geändert hatte -.-

    Muss mal einer verstehen (zumal ich zwischendurch Rebuilds gemacht hatte). Aber auf jeden Fall geht es jetzt 🙂 Besten Dank an alle!!!



  • bmth schrieb:

    und nach dem Restart klappte es dann. Ohne dass ich etwas geändert hatte -.-

    Unwahrscheinlich. :p


Anmelden zum Antworten