bedingung ín while schleife



  • habe da ein problem mit einer while schleife.. hier erstmal der code:

    while (!(x[0][0]=='x' && x[0][1]=='x' && x[0][2]=='x') ||
           !(x[1][0]=='x' && x[1][1]=='x' && x[1][2]=='x'));
    

    wenn ich die zweite zeile weg lasse, funktioniert das einwandfrei.. die schleife wird verlassen, wenn die oberste zeile wahr ist.. aber zusammen mit der zweiten zeile gehts nicht.. dann wird die scheife erst verlassen, wenn beide zeilen wahr sind.. aber ich habe die beiden zeilen doch mit ODER verknüpft.. also sollte die schleife doch auch verlassen werden, wenn nur eine der beiden zeilen wahr ist.. kann mir einer sagen, wo hier der fehler ist?
    ich hoffe, jeder weiss so einigermaßen was ich meine..



  • also ich weiss jetzt zwar, dass ich die bedingungen mit && anstatt || verknüpfen muss, aber irgendwie steig ich nicht so ganz hinter die logik davon...



  • kermit++ schrieb:

    also ich weiss jetzt zwar, dass ich die bedingungen mit && anstatt || verknüpfen muss, aber irgendwie steig ich nicht so ganz hinter die logik davon...

    sdu prüfst auch nicht ob es wahr ist sondern ob es falsch ist.



  • 1ntrud0r schrieb:

    kermit++ schrieb:

    also ich weiss jetzt zwar, dass ich die bedingungen mit && anstatt || verknüpfen muss, aber irgendwie steig ich nicht so ganz hinter die logik davon...

    sdu prüfst auch nicht ob es wahr ist sondern ob es falsch ist.

    so wird doch überprüft, ob es WAHR ist, dass die bedingungen NICHT zutreffen, würde ich mal sagen..



  • Ich glaube du willst, dass die Schleife durchlaufen wird, wenn entweder 01, 02, 03 ODER 10,11,12 'x' beinhalten. Dann musst du die einzelnen Bedingungen nochmal einklammern. Also:

    while ((!(x[0][0]=='x' && x[0][1]=='x' && x[0][2]=='x')) || 
           (!(x[1][0]=='x' && x[1][1]=='x' && x[1][2]=='x')));
    

Anmelden zum Antworten