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 beendet
    

    vielleicht 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


Anmelden zum Antworten