do while mit switch



  • hallo ich habe ein problem mit do while und switch und zwar:

    wenn ich (im fall ist jetzt case immer 0) das programm starte und mit x=x+1 hinaufgehe sollte er ja bei 6 rausspringen. tut er aber komischerweise nicht. schreibe ich aber im case 0 x=6 (auskommentiert) sprint er heraus.

    case 1 bis 7 sind jetzt mal nicht relevant und bitte zu ignorieren.

    ich hoffe mein problem wird verstanden:

    do
    		{
    			int randNr;
    			randNr = 0;
    				//rand()%8;
    			count_walk++;
    
    			switch(randNr)
    			{
    			case 0: x=x+1;
    					//x=6;
    					counterpertrial++;
    					break;
    				/*case 1: x=x+1;y=y+1;
    					printf("1te x: %d\n",x);
    					counterpertrial++;
    					break;
    				case 2: y=y+1;
    					printf("2te x: %d\n",x);
    					counterpertrial++;
    					break;
    				case 3: x=x-1; y=y+1;
    					printf("3te x: %d\n",x);
    					counterpertrial++;
    					break;
    				case 4: x=x-1;
    					printf("4te x: %d\n",x);
    					counterpertrial++;
    					break;
    				case 5: x=x-1; y=y-1;
    					printf("5te x: %d\n",x);
    					counterpertrial++;
    					break;
    				case 6: y=y-1;
    					printf("6te x: %d\n",x);
    					counterpertrial++;
    					break;
    				case 7: x=x+1; y=y-1;
    					printf("7te x: %d\n",x);
    					counterpertrial++;
    
    					break;*/
    			}
    		}while(x != 6);
    

    Lg einmans



  • Welchen Wert hat x wenn du in die do-while-Schleife gehst?



  • DirkB schrieb:

    Welchen Wert hat x wenn du in die do-while-Schleife gehst?

    sorry, hab die for schleife nicht mitgenommen. x hat den wert 3.
    hab es jetzt mal mit x<5 versucht, hat auch nicht funktioniert.

    nach einem pc neustart funktioniert es jetzt schon besser. immerhin springt er mir wenn x jetzt 5 erreicht hat raus.

    jedoch ignoriert er das y.. sprich wenn ich die random zahl den cas 0-2 gebe kann y ohne weiters bis 7 gehen was ja nichts sein darf

    das while dazu:

    }while( (y < 5) | (x < 6));
    

    😕



  • einmansbuscher schrieb:

    nach einem pc neustart funktioniert es jetzt schon besser.

    Ich habe schon bessere Ausreden für schlechten Code gehört.
    Deine Abbruchbedingung x!=6 ist korrekt, die Schleife wird bei dem genannten Code korrekt arbeiten. Wenn nicht, liegt es an dir und du hast anderen Code oder andere Variablenwerte als genannt.



  • Wutz schrieb:

    einmansbuscher schrieb:

    nach einem pc neustart funktioniert es jetzt schon besser.

    Ich habe schon bessere Ausreden für schlechten Code gehört.
    Deine Abbruchbedingung x!=6 ist korrekt, die Schleife wird bei dem genannten Code korrekt arbeiten. Wenn nicht, liegt es an dir und du hast anderen Code oder andere Variablenwerte als genannt.

    was soll daran eine ausrede sein, oder was gibst du als grund an wenn du nichts am code änderst den pc neustartest und plötzlich funktioniert es? 😕 😕 😕

    warum soll das eine ausrede sein?? was soll mir das bringen?!??



  • }while( (y < 5) | (x < 6));
    

    Das | ist das Bitweise Oder.
    In diesem Zusammenhang ist || (das logische Oder) richtiger.

    Aber dadurch kann y auch 1000 erreichen denn solange x < 6 ist, ist die Bedingung wahr und die Schleife wird ausgeführt.
    Daher ist hier wohl && (das logische Und) gemeint.

    tue {
    } solange ( (y < 5) UND (x < 6) )
    Nur wenn beides zutrifft wird die Schleife fortgesetzt.


Anmelden zum Antworten