isdigit()
-
Ward schon versucht, ohne Erfolg!!
-
cin >>&Platz[i]; //<= mach mal das & weg ... if(isdigit(Platz[i])) // isdigit gibt true zurück wenn Platz[i] eine Ziffer ist { cout <<"Fehleingabe!Bitte nochmal eintippen\n"; }
-
ich hab kein thread gefunden, der's mir erklären konnte, also möcht ich hier noch mal fragen: wie kann ich die eingabe des users auf richtigkeit überprüfen.
in meinem fall sollen zahlen vom typ float eingegeben werden. das ganze geschieht in einer schleife:
for(int i=0; i<Anzahl; i++) //Anzahl ist die Anzahl der zu speichernden Einträge { cout << i+1 << ": "; cin >> Ueberpruefung; if(!isalpha(Ueberpruefung)) { Preise[i]=Ueberpruefung; } else { cout << "Falsche Eingabe" << endl; i--; } }dass so was falsch ist hab ich wohl gemerkt, aber wodran genau hängts?
optimal wäre eine lösung, die ein getipptes komma durch den für float
zulässigen punkt zu ersetzt, falls dies der fehler bei der eingabe ist.
-
C++ macht man das nicht so -.- Wenn floating point zahlen eingelesen werden sollen:
std::vector<float> data(max_entrys); for (std::size_t i = 0; i < data.size(); ++i) { std::cout << (i + 1) << ": " << std::flush; while (!(std::cin >> data.at(i))) { std::cin.clear(); std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); } }...
-
tut mir leid, wenn ich mich ab und zu dumm anstell' - bin eben ein neuling. durch "using namespace std" kann man das std:: doch weglassen oder irre ich mich da?
-
Du irrst dich nicht.
Aber immer schön aufpassen, dass sich ein using namspace ... nicht in eine Headerdatei verirrt.
-
nochmal zu dem code: selbst wenn er funktioniert bringt er mir nichts, wenn ich ihn nicht verstehe. würd mich freun, wenn mir jemand das schritt für schritt erklären könnte.
nach dem buch, mit dem ich lerne, steht der namespace immer hinter den includes (ist da nicht verkehrt oder?)
-
Bevor du weiterfragst solltest du dir vielleicht mal was bezüglich namspaces durchlesen.
z.Bsp.
http://tutorial.schornboeck.net/namespace.htm
http://www.cpp-tutor.de/cpp/le16/le16_05.htm
-
std::vector<float> data(max_entrys); // einen dynamischen Array(vector) mit der Größe max_entrys anlegen(den Wert musst du halt festlegen). for (std::size_t i = 0; i < data.size(); ++i) // für jedes Element, das in den Array soll... { std::cout << (i + 1) << ": " << std::flush; // Element-ID + 1 ausgeben ... while (!(std::cin >> data.at(i))) { std::cin.clear(); std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); } // solange das einlese fehlschlägt( er also aus der Eingabe keinen float machen kann, setzte alle Fehlerbits zurück und werfe den momentanen Inhalt aus dem buffer ... }... so ist es stark vereinfacht erklärt

-
vielen dank für alles, werde mich selbst jetzt auch intensiver mit namensräumen beschäftigen