Passwortabfrage über String - do while Schleife funktioniert nicht
-
otze schrieb:
Nimm es als ernst gemeinten Rat auf. Warte noch ein Jahr und komm dann wieder.
Ich würde gern diesen Rat in die Tat umsetzen, bloß einerseits habe ich in nicht einmal 2 Wochen eine wichtige Prüfung und zum anderen schreibe ich im Sommer 2013 die Abschlussprüfung im Fach Datenverarbeitungstechnik, wo ca. 75% der Prüfung aus C++ besteht.
Können wir da keinen Kompromiss finden?
-
silent_max schrieb:
Habt ihr mich jetzt alle auf den Kicker oder wie??
Du schaffst es seit 2 Monaten nicht eine while Schleife zu verstehen. Oder überhaupt irgendetwas über den Programmablauf. Dein Code ist so unglaublich haarsträubend für jeden der länger als eine Woche programmiert hat, dass das die einzig logische Schlussfolgerung ist. PS: Dein neuer Code macht genau so wenig Sinn. Ich wüsste nicht mal genau was du erreichen willst, so wirr ist das. Programmieren ist nicht rum raten. Du musst genau wissen was du willst, und du musst genau wissen wozu jede einzelne Anweisung in deinem Code steht.
-
"Sonderzeichen" wie 'ß' oder ähnliche sollte man möglichst meiden. Die machen bei Quelltexten oft Ärger. Okay, wenn man weiss wie es geht, geht auch das.
Nimm statt 'ß' zum Üben einen selten genutzten Buchstaben. Wie wäre es mit 'q'?
-
Mal langsam ...
Eine
do...while
Schleife soll doch mindestens einmal durchlaufen, während die Bedingung zu Schluss abgefragt wird.Wenn die Bedinung nicht erfüllt wird, dann wird doch zurück zum Anfang gesprungen.
Oder liege ich falsch?
-
Ne, das passt.
Aber, wenn du die Bedingung in der Schleife nicht änderst, warum soll die Schleife ihr Verhalten ändern
-
f.-th. schrieb:
Aber, wenn du die Bedingung in der Schleife nicht änderst, warum soll die Schleife ihr Verhalten ändern
Genau das Verstehe ich ja im Moment nicht...
Die Bedingung ist doch solange e ungleich q(e!=q) ist, soll die Schleife durchlaufen. Das hat doch nichts mit dem zu tun, was in der Schleife steht...
-
Dann lies es nochmal. Und nochmal
solange bla ungleich blubb ist.
Was passiert aber wenn bla gleich blubb ist?
Egal ob bla jetzt number oder e heißt.Du hast number auf 0 gesetzt.
Damit ist die Bedingung number != 0 unwahr.
-
Das du ja Schwierigkeiten hast mit dem Verstehen hast, mal so
do { // ab hier bis zur while-Zeile musst du etwas mit e machen!!! cout << "Wie lautet das Passwort?\n"; cin >> Passwort; if(Passwort=="1306*Vatertag") cout << "Richtig eingegeben"; else cout << "Nicht richtig eingegeben!\n"; }while(e!='q'); }
Warum weigerst du dich den Kommentar im Quelltext zu verstehen
-
Zwar ist das jetzt offtopic, aber hier hätte ich einmal einen Programmcode, bei dem auch eine
do ... while
Schleife zum Einsatz kommt...#include <iostream> #include "Addition.h" #include "Subtraktion.h" #include "Multiplikation.h" #include "Division.h" using namespace std; int main() { int number; do { float x, y,z; float *px = &x; float *py = &y; float *pz = &z; cout << "Welche Rechenoperation wollen Sie durchfuehren?\n"; cout << "(1) Addition \n"; cout << "(2) Subtraktion \n"; cout << "(3) Multiplikation \n "; cout << "(4) Division \n"; cout << "(0) Exit! \n"; cin >> number; switch(number) { case 1: cout << "Addition!\n"; cout << "Geben Sie dazu zwei Zahlen ein!\n"; cin >> *px >> *py; *pz = *px + *py; cout << *px << " + " << *py << " = " << *pz << "\n"; break; case 2: cout << "Subtraktion!\n"; cout << "Geben Sie dazu zwei Zahlen ein!\n"; cin >> *px >> *py; *pz = *px - *py; cout << *px << " - " << *py << " = " << *pz << "\n"; break; case 3: cout << "Multiplikation!\n"; cout << "Geben Sie dazu zwei Zahlen ein!\n"; cin >> *px >> *py; *pz = (*px) * (*py); cout << *px << " * " << *py << " = " << *pz << "\n"; break; case 4: cout << "Division!\n"; cout << "Geben Sie dazu zwei Zahlen ein!\n"; cin >> *px >> *py; *pz = (*px) / (*py); cout << *px << " / " << *py << " = " << *pz << "\n"; break; case 0: cout << "Exit durch Abbruch!\n"; break; } }while(number!=0); return 0; }
Da habe ich auch mit folgenden gearbeitet:
1.)int number
2.)do{...}while(number!=0)
Und genau das verstehe ich im Moment nicht... Beim Taschenrechner über Pointer funktioniert es und bei der Passwortabfrage über String funktioniert es nicht...
-
silent_max schrieb:
Wenn die Bedinung nicht erfüllt wird, dann wird doch zurück zum Anfang gesprungen.
Himmel.
Ein Rücksprung zum Anfang erfolgt, wenn die Bedinung WAHR ist.e=='q', damit ist die Bedingung e!='q' FALSCH und die Schleife wird nicht erneut ausgeführt.
Troll Dich doch...
-
int number = 0; // number ist jetzt gleich 0; do { }while( number != 0); // Weitermachen (mit der Schleife) wenn number ungleich 0 }
Wie oft wird die Schleife durchlaufen?
-
f.-th. schrieb:
Warum weigerst du dich den Kommentar im Quelltext zu verstehen
Sie meinen Taschenrechner über Pointer...
Da habe ich am Anfang auch nur
int number;
deklariert und bei derdo...while
Schleife als Bedingung [c]while(number!=0) gesetzt. Nichts gegen Dich, f.-th., aber warum soll ich es denn bei dem Code für das Passwort anders machen??
-
silent_max schrieb:
f.-th. schrieb:
Warum weigerst du dich den Kommentar im Quelltext zu verstehen
Sie meinen Taschenrechner über Pointer...
Da habe ich am Anfang auch nur
int number;
deklariert und bei derdo...while
Schleife als Bedingung [c]while(number!=0) gesetzt. Nichts gegen Dich, f.-th., aber warum soll ich es denn bei dem Code für das Passwort anders machen??Du Veränderst die Variable in deinem Dreckcode für die Passwort-Abfrage nicht innerhalb der Schleife. Deshalb wird die Schleife einmal oder unendlich oft ausgeführt, je nach Anfangsbelegung.
Ich muss sone langsam zustimmen -> Geistige Behinderung oder Lernschwäche.
-
silent_max schrieb:
/*...*/ int main() { int number; do { /*...*/ cin >> number; /*...*/ }while(number!=0); /*...*/ }
... Teil der Bedingung (
number
) im Schleifenkörper veränderlich.silent_max schrieb:
/*...*/ int main() { /*...*/ char e='ß'; /*...*/ do { /*...*/ }while(e!='ß'); /*...*/ }
... Teil der Bedingung (
e
) im Schleifenkörper nicht veränderlich.
-
Ok
Swordfish schrieb:
... Teil der Bedingung (
e
) im Schleifenkörper nicht veränderlich.Jetzt habe ich es kapiert... also muss die Variable, die ich als Bedingung setze, veränderbar sein.
Hier jetzt der Programmcode, der funktioniert:
#include <iostream> #include <string> using namespace std; int main() { string e; e = "1306*Vatertag"; cout << "\n"; cout << "\tPasswortabfrage!\n"; cout << "\n"; do { cout << "Wie lautet das Passwort?\n"; cin >> e; if(e=="1306*Vatertag") cout << "Richtig eingegeben"; else cout << "Nicht richtig eingegeben!\n"; }while(e!="1306*Vatertag"); return 0; }
Edit:
Wer ist eigentlich noch der Meinung, dass ich nur Scheiße produziere??????
-
silent_max schrieb:
Wer ist eigentlich noch der Meinung, dass ich nur Scheiße produziere??????
Frag lieber mal, wer nicht dieser Meinung ist.
-
[quote="DieWahrheit"]
silent_max schrieb:
Frag lieber mal, wer nicht dieser Meinung ist.
Also, wer ist nicht der Meinung, dass ich nur Scheiße produziere??
-
silent_max schrieb:
Edit:
Wer ist eigentlich noch der Meinung, dass ich nur Scheiße produziere??????
Ich
-
silent_max schrieb:
Wer ist eigentlich noch der Meinung, dass ich nur Scheiße produziere??????
Man sieht Deinem Code einfach an, dass Du sogar die einfachsten Sprachmittel nicht verstanden hast und so gut wie nichts über den Programmablauf weißt.
Ein Beispiel, erkläre mal bitte diese Zeilen:
string e; e = "1306*Vatertag";
Warum exakt belegst Du e mit diesem Wert an dieser Stelle?
-
GanzEinfach... schrieb:
Ein Beispiel, erkläre mal bitte diese Zeilen:
string e; e = "1306*Vatertag";
Warum exakt belegst Du e mit diesem Wert an dieser Stelle?
string e
: e soll vom Typ String sein
e="1306*Vatertag
: In der Stringvariablen e soll das Wort 1306*Vatertag stehenWobei man auch
string e = "1306*Vatertag
schreiben hätte können.Oder liege ich falsch????????????