FOR schleife == geht nicht



  • Moin in die runde,
    ich bin am verzweifeln und bin guter dinge, hier jemand zu finden der die Lösung hat. Ich habe gegoogelt und Bücher gelesen aber irgendwas mache ich falsch, komme aber nicht drauf.

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        string name = "Mr_X";
        int i;
    
        for(i=0;i==3;i++)
        {
            if(name[i] == '_')
            {
                   name[i]=' ';
            }
        }
        cout << name;
        return 0;
    
    }
    

    Dieses Programm erfüllt kein Tieferen sinn, lässt sich garantiert auch anders lösen aber, es geht mir nur darum zu verstehen wie etwas Funktioniert und das was ich geschrieben habe Funktioniert nicht 😉

    PROBLEM:
    Die FOR Schleife will nicht funktionieren wenn ich "for(i=0;i**==3;i++)" schreibe. Schreibe ich aber "for(i=0;i<**4;i++)" funktioniert es.

    Er soll nach "_" suchen und diese durch ein " " ersetzen. Jaaa, ich weis das es dafür ein Befehl gibt 😉 darum geht es aber nicht.



  • Hallo Pardasus,

    wie Du selbst schon richtig erkannt hast, funktioniert die For-Schleife mit der Bedingung "i < 4" korrekt.

    Die For-Schleife läuft solange bis die Bedingung ungültig wird. Mit "i == 4" (sprich "0 == 4", da "i = 0") ist die Bedingung nicht erfüllt. Und somit wird kein Schleifendurchlauf durchgeführt.

    Viele Grüße



  • for(i=0;i==3;i++)
    

    i==3 ist das gleich wie while(i==3), also solange i den Wert 3 hat, wird die Scheife weiterlaufen.



  • Pardasus schrieb:

    Die FOR Schleife will nicht funktionieren wenn ich "for(i=0;i**==**3;i++)" schreibe

    Klar funktioniert sie! Du sagst dem Programm damit:

    1. Setze i auf 0.
    2. Wenn i gleich 3 ist, führe die Schleife aus.
    3. Erhöhe nach jedem Schleifendurchlauf i um 1.
    4. Prüfe, ob i noch gleich 3 ist, wenn ja ---> 2., wenn nein, Ende der Schleife.

    Da Du zuerst i auf 0 setzt, ist also bei der Frage, ob i gleich 3 ist, bereits Schluss, und die Schleife wird nicht einmal durchlaufen. Das hast Du so programmiert und genau so sollte es auch funktionieren (auch wenn es offensichtlich nicht das ist, was Du erwartet hast).



  • Klingt jetzt alles irgendwie logisch 😉 habe schon Kopfschmerzen davon bekommen weil mir das einfach nicht in den Kopf ging warum < funktioniert aber == nicht.

    Danke euch! Jetzt kann ich zumindest ruhig schlafen heute Nacht 😉


Log in to reply