Problem Abfrage ob 1 oder 0 eingegeben wurde , C++
-
Hallo, ich sitze momentan an einem Problem, dass vielleicht sogar einfach zu lösen ist, ich aber selbst irgendwie nicht drauf komme.
Das Programm läuft folgend ab:
Die Binäre Zahl wird eingegeben und überprüft werden soll, ob auch eine 1 oder eine 0 vorkommt.
Wenn etwas anderes als eine 1 oder 0 eingegeben worden ist, soll es mir einen Fehler ausgeben.
Das funktioniert nur nicht wirklich.Hier mein Code:
#include <iostream> #include <cstdlib> #include <iomanip> using namespace std; int main(int argc, char** argv) { string bin; cout << "BIN: " <<endl; cin >> bin; int laenge = bin.length(); while(laenge > 0 ) { if(bin[laenge] != '1' || bin[laenge] != '0') { cout << "f"; laenge = 0; } else { cout << "r"; laenge = laenge -1; } } return 0; }
Was mache ich Falsch?
-
Überprüfe mal die Logik in deiner Abfrage.
Edit: Und mit
laenge = 0;
hast du dir eine evtl. Endlosschleife eingebaut. Benutze besserbreak
.
-
bin
ist dein String.
bin.length()
ist dessen Länge.
Quizfrage: welches Zeichen steht beibin[bin.length()]
?Und dann:
Wenn im Test nach "(ungleich 1) oder (ungleich 0)" gefragt wird: für welche Werte soll das denn "falsch" ergeben?
-
@wob naja, das steht da nicht wirklich. Er zählt schon runter, bzw. will es. Th69 hat ja recht, die Logik ist falsch. Aber warum nicht erstmal den code richtig formatieren, so hat doch keiner Lust sich das anzugucken...
Ja, erster Durchlauf ist außerhalb, oder?bin.at() ist da ganz nützlich. (trotzdem)
-
@Th69 ja endloss Schleife hab ich schon gemerkt, das habe ich gelöst indem ich sage
while(laenge > 0)
-
@dirkski sagte in Problem Abfrage ob 1 oder 0 eingegeben wurde , C++:
naja, das steht da nicht wirklich.
Was steht wo nicht wirklich?
Man darf auf string[length_of_string] zugreifen, das ist '\0'.
-
@wob hast natürlich recht. War zu schnell.
-
@wob ich verstehe nich ganz...
-
@diejessi du kannst dein Beitrag editieren in dem du darunter rechts auf die drei Punkte klickst. Dann kannst du die Codetags richtig setzen.
Danke
-
- Antwort. Die von Swordfish
-
@diejessi sagte in Problem Abfrage ob 1 oder 0 eingegeben wurde , C++:
Die Binäre Zahl wird eingegeben und überprüft werden soll, ob auch eine 1 oder eine 0 vorkommt.
Wenn etwas anderes als eine 1 oder 0 eingegeben worden ist, soll es mir einen Fehler ausgeben.Pobier mal so:
if (regex_match(bin, regex("[01]+"))) { // Gültiger Binärstring } else { // Eingabe enthält falsche Zeichen }
Edit: #include <regex> nicht vergessen.
-
[..]
Die Binäre Zahl wird eingegeben und überprüft werden soll, ob auch eine 1 oder eine 0 vorkommt.Auch? Oder nur aus 0en und 1en besteht?
-
@dirkski soll nur aus 0 und 1 bestehen, nichts anderes. Also eine Binäre Zahl soll eingegeben werden.
-
@RBS2 #error This file requires compiler and library support for the \
das kommt dabei raus..
-
@dirkski #error This file requires compiler and library support for the \
kommt dabei raus, wenn ich das so benutze
-
@diejessi schau dir swordfishs if-abfrage an und vergleiche sie mit deiner. Ist kein großer Unterschied. Aber der ist halt wichtig.
Danke für die Nachformatierung deines codes.
Bin gerade mit dem smartfon dabei und ist ziemlich lästig mit der kopiererei...
-
#include <iostream> #include <cstdlib> #include <iomanip> #include <regex> using namespace std; bool is_valid_binary(std::string const&str) { for(auto ch : str) if(ch != '1' || ch != '0') return false; return true; } int main(int argc, char** argv) { string bin; cout << "BIN: " <<endl; cin >> bin; if(!is_valid_binary(bin)) { cout << "f"; laenge = 0; } else { cout << "r"; laenge = laenge -1; } return 0; }
Funktioniert nicht, ebenfalls eine Fehlermeldung..
-
@diejessi und welche? Fehlermeldungen bitte auch in
```text
Fehlermeldung...
```Bin unterwegs und habe nur termux-clang
-
@diejessi wenn dein Compiler regex nicht kennt solltest du das entsprechende include raus nehmen...
-
@diejessi sagte in Problem Abfrage ob 1 oder 0 eingegeben wurde , C++:
@RBS2 #error This file requires compiler and library support for the \
das kommt dabei raus..
Neuen Compiler nehmen. Meiner ist GCC 7.4.0