Fehler bei Kontrollstruktur
-
Wieso funktioniert das nicht?
#include <iostream> int main() { int Buffer[20]; std::cout<< "Gebe bitte eine Zahl ueber 100 ein!"<<std::flush; std::cin>>Buffer[20]; if (Buffer < 100) { std::cout<<"Sorry! Leider hast du eine Zahl unter 100 eingegeben. Das geht nicht."<<std::endl; } else { std::cout<<"Super! Du bekommst nun 5000 Programmpunkte."<<std::endl; } }Eigentlich sieht die Übung so aus:
#include <iostream> #include <cstdlib> int main() { char Buffer[20]; std::cout << "Geben Sie eine Zahl ein: " << std::flush; std::cin.get(Buffer, sizeof(Buffer)); if (std::atoi(Buffer) < 100) { std::cout << "Sie haben eine Zahl kleiner als 100 eingegeben." << std::endl; } }Aber ich experimentiere gerne und lerne dadurch wesentlich schneller durch die Fehler die ich mache. Aber wie ist es denn richtig? Und, ist dieses atoi wirklich quatsch? Kann man ja auch so machen wie ich jetzt, oder?
-
Das ist ziemlicher Quatsch..
int zahl = 0; std::cin >> zahl; //einlesen einer zahl if ( zahl > 200 ) ... else ...Die Eingabe muss noch auf gültigkeit überprüft werden..
-
Zumal du einen Logikfehler drinne hast.
Ein int-Array hat die möglichkeit mehrere ints an verschiedenen Speicherstellen aufzunehmen. So zum Beispiel0. Arraystelle = 0;
1. Arraystelle = 100;
....usw.
Das heißt für dich, du müsstest in einer Schleife das Array füllen UND du müsstest in einer Schleife die einzelnen Indizes auf "größer oder kleiner" prüfen. Weiterhin hättest du ein Problem in deiner If-AbfrageDu sagst,wörtlich:"Wenn Buffer kleiner als 100 ist, dann gib dem User eine Meldung das er eine Zahl eingegeben hat die größer als 100 ist" Das ist aber irgendwie sinnlos

-
Firefighter schrieb:
Das heißt für dich, du müsstest in einer Schleife das Array füllen UND du müsstest in einer Schleife die einzelnen Indizes auf "größer oder kleiner" prüfen.
Na ja, ich glaube das will er ja gar nicht. drakon hat's im Grunde auf den Punkt gebracht. Trotzdem noch ein wenig Erklärung, zur Sicherheit:
In der "Übung" wird ein String (char-Array) eingelesen und der Inhalt dann für den Vergleich in eine Zahl umgewandelt (atoi). In einem String benötigt jede Ziffer der eingegebenen Zahl ein char. Dazu kommt noch die abschließende Null ("12345" ist beispielsweise ein String der Länge 6). Deshalb wurde da einfach mal pauschal ein String/char-Array der Länge 20 angelegt. Du hast die Sache vereinfachen wollen, indem du direkt eine Zahl (int) einliest. Das ist schon sinnvoll, nur dass du ein Array of ints gebildet hast, dass 20 Zahlenwerte speichern kann. Du willst nur eine Zahl einlesen. Deshalb musst du es so machen, wie in drakons Beispiel. Ein int reicht also.
-
Ups den Letzen Codeabschnitt habe ich gar nicht mitgelesen. Meine Lösung ist ja nur eine Erweiterung, besser gesagt eine Möglichkeit, sein Problem so zu lösen wie ich meinte es zu Interpretieren. Ansonsten, wenn ich das nochmal lese, ja, da reicht drakons Lösung.