For Schleife

Hallo,

folgende Funktion ist mir gegeben: jedes Zeichen s2 in s1
löschen

void squeeze (char s1[], char s2[])
{
int i, j, k;
for (i=k=0; s1[i] != ‚\0‘; i++)
{
for(j=0; s2[j] != ‚\0‘ && s2[j] != s1[i]; j++);
if(s1[i]==’\0’)
s1[k++]=s1[i];
}
s1[k]=’\0’;
}

die Frage ist: muss in der zweiten for Schleife nicht || Zeichen stehen?
Denn so wie ich das verstehe: muss die zweite for Schleife
bei s2[j] == ‚\0‘ oder bei s2[j] == s1[i] ihre Schleife beenden.

Hier jedoch, müssen beide Bedinnungen zutreffen, oder???

Danke,
Alexander

Hallo Alexander,

die Frage ist: muss in der zweiten for Schleife nicht ||
Zeichen stehen?

Nein, denn

Hier jedoch, müssen beide Bedinnungen zutreffen, oder???

Ganz genau. Es müssen beide Bedingungen erfüllt sein um weiterhin die Schleife auszuführen. Und das erledigt UND (&&amp:wink:.

Bei Abbruchsbedingungen verleitet einen die Sprechweise „Wenn Bedingung 1 oder Bedinung 2 nicht mehr zutrifft, brich ab“ dazu ein ODER zu verwenden. Ging mir ganz genau so, das hat in Schleifen immer zu tollen Ergebnissen geführt *grins*…
Man benötigt aber ein UND, denn wenn eine der beiden Bedingungen ungültig ist muss abgebrochen werden.

Gruss
Martin
P.S. Da ist ein Tippfehler im Code: „if(s1[i]==’\0’)…“ muss „if(s2[j]==’\0’)…“ lauten, wenn ich die Funktion richtig verstanden habe

Dank!!!

Hallo,

danke für die Hilfe!!

P.S. Da ist ein Tippfehler im Code: „if(s1[i]==’\0’)…“ muss
„if(s2[j]==’\0’)…“ lauten, wenn ich die Funktion richtig
verstanden habe

und du hast recht, ich habe mich vertippt!

Gruss,
Alexander