Probleme mit schleife
-
guten tag die herren...
ich verwende dev c++ und der folgende code funktioniert nicht, so wie er soll...
char link[100]; // auswahlsvariable ( P,F) char pfad[100]; // char um pfad anzugeben int fertig; // Rückgabewert um while schleife zu beenden char korrekt; // abfrage ob richtig do { cout << "Gib zuerst deinen Pfad an!\n"; cin >> pfad; cout << "und nun deinen Link!\n"; cin >> link; cout << "ist die Eingabe richtig? (y oder n)\n"; cin >> korrekt; if ((korrekt == 'y')||(korrekt == 'Y')); fertig = 1; if ((korrekt != 'y')||(korrekt != 'Y')); fertig = 0; } while (fertig = 0);ok, mit den beiden if-schleifen will ich abfragen, ob der benutzter mit seiner eingabe richtig liegt...
wenn ja = y dann soll das ding die daten speichern ( folgt später), wenn nein = n dann soll die schleife von vorne beginnen, damit er berichtigen kann...
ja, soweit die theorie, in der praxis bricht er nämlich ab, egal ob y oder n oder was auch immer man eingibt, warum?! ergibt für mich keinen sinn... hab mir jetzt seit 1 stunde den kopf zerbrochen, aber ich komm einfach nicht auf den fehler...so, 2.tes problem...
nun fragt ihr euch sicher, warum ich 2 if´s verwendet habe...
weil folgender code nicht funktioniert...
do { cout << "Gib zuerst deinen Pfad an!\n"; cin >> pfad; cout << "und nun deinen Link!\n"; cin >> link; cout << "ist die Eingabe richtig? (y oder n)\n"; cin >> korrekt; if ((korrekt == 'y')||(korrekt == 'Y')); fertig = 1; else fertig = 0; } while (fertig = 0);fehlermeldung ( bezogen auf das 2te problem):
[b]URL speichern main.cpp:39: error: expected primary-expression before "else" URL speichern main.cpp:39: error: expected `;' before "else"[/b] make.exe: *** ["URL speichern main.o"] Error 1 Ausführung beendetvielleicht hat ja einer von euch einem programmiernoob ein paar nette tipps...
danke
-
habs nur überflogen:
fertig=0 ist kein vergleich sondern eine zuweisung. der wert ist also IMMER falsch.
if ((korrekt == 'y')||(korrekt == 'Y')); <- semikolon weg
-
Deine "Loesung" folgt direkt aus dem zweitem Problem.
do { // snip } while (fertig = 0); // das ist eine zuweisung, kein vergleich (sowas wird immer als 'wahr' ausgewertet. stimmts?)Zum zweitem Problem: Stell dir vor, der Benutzer hat eine gueltige Eingabe gemacht (korrekt == 'y' oder korrekt == 'Y'). Dann liefert dir die zweite Abfrage ein 'wahr', da 'y' != 'Y', bzw. 'Y' != 'y' (Alles Andere erst Recht). Somit ist dein 'fertig' immer == 0 und darueber hinaus setzt Du es explizit = 0 im while (fertig = 0).
-
Auf gut Deutsch, mach draus:
while (fertig == 0);
-
ok danke.... war ja ein typischer anfängerfehler in der while schleife
...wegen der abfrage muss ich mir nun was anderes überlegen, werde es mal mit switch versuchen
...ich bin einfach zu faul zum denken, ich muss alles ausprobieren

-
ok, mit einer if - else schleife hat es nun funktioniert, wunderbar...
-
Hi!
Um das für alle klar zu machen, die dem Trend anhängen zu meinen if..else wären Schleifen. Das sind keine Schleifen, sondern Kontrollstrukturen.
Keine Ahnung warum so viele es für Schleifen halten.

grüße
-
David_pb schrieb:
Hi!
Um das für alle klar zu machen, die dem Trend anhängen zu meinen if..else wären Schleifen. Das sind keine Schleifen, sondern Kontrollstrukturen.
Keine Ahnung warum so viele es für Schleifen halten.

grüße
is doch das gleiche...

-
Lazareth schrieb:
David_pb schrieb:
Hi!
Um das für alle klar zu machen, die dem Trend anhängen zu meinen if..else wären Schleifen. Das sind keine Schleifen, sondern Kontrollstrukturen.
Keine Ahnung warum so viele es für Schleifen halten.

grüße
is doch das gleiche...

mö :p
-
Lazareth schrieb:
David_pb schrieb:
Hi!
Um das für alle klar zu machen, die dem Trend anhängen zu meinen if..else wären Schleifen. Das sind keine Schleifen, sondern Kontrollstrukturen.
Keine Ahnung warum so viele es für Schleifen halten.

grüße
is doch das gleiche...

Hachja Lazareth, eigne dir die Grundlagen an, dann bekommst du vllt ganz neue Erkenntnisse!

grüße