while-schleife



  • Das hab ich auch schon probiert... ist das gleiche ergebnis wie mit komma.



  • Ok mit && hab ich es auch gerade versucht, und hab das Ergebnis herausbekommen, was ich vermutet hatte, und zwar müssen dann Feld 1,2,3,4,5 und 6 den Wert 'X' haben...
    P.S. das mit dem Komma ist fast das gleiche wie &&

    z.B. ist das das gleiche :

    while(cFeld1,cFeld2 != 'X')
    //und
    while(cFeld1 && cFeld2 != 'X')
    

    Ich Schreib ma eben den kompletten Quelltext, villeicht versteht ihr mich dann. :

    /*Tic-Tac-Toe*/
    #include <iostream>
    #include <conio.h>
    
    using namespace std;
    
    int main()
    {
    	char cFeld1 = '1',
    			 cFeld2 = '2',
    			 cFeld3 = '3',
    			 cFeld4 = '4',
    			 cFeld5 = '5',
    			 cFeld6 = '6',
    			 cFeld7 = '7',
    			 cFeld8 = '8',
    			 cFeld9 = '9';
    
    		char cPlayer1 = 'X',
    			 cPlayer2 = 'O';
    
    		int iEingabe = 0 ;
    
    	while(cFeld1,cFeld2,cFeld3 != 'X' && cFeld4,cFeld5,cFeld6 != 'X' )		//while(cFeld1,cFeld2,cFeld3 != 'X' || cFeld4,cFeld5,cFeld6 != 'X' || cFeld7,cFeld8,cFeld9 != 'X' || cFeld1,cFeld4,cFeld7 != 'X' || cFeld2,cFeld5,cFeld8 != 'X' || cFeld3,cFeld6,cFeld9 != 'X'|| cFeld1,cFeld5,cFeld9 != 'X' || cFeld3,cFeld5,cFeld7 != 'X'				 ||					cFeld1,cFeld2,cFeld3 != 'O' || cFeld4,cFeld5,cFeld6 != 'O' || cFeld7,cFeld8,cFeld9 != 'O' || cFeld1,cFeld4,cFeld7 != 'O' || cFeld2,cFeld5,cFeld8 != 'O' || cFeld3,cFeld6,cFeld9 != 'O'|| cFeld1,cFeld5,cFeld9 != 'O' || cFeld3,cFeld5,cFeld7 != 'O' )
    	{
    
    		/* Zu Player 1 */
    		do
    		{
    			iEingabe = 0 ;
    
    			cout << cFeld1 << " | " << cFeld2 << " | " << cFeld3 << endl
    				 <<          "--+-" <<          "--+--" << endl
    				 << cFeld4 << " | " << cFeld5 << " | " << cFeld6 << endl
    				 <<          "--+-" <<          "--+--" << endl
    				 << cFeld7 << " | " << cFeld8 << " | " << cFeld9 << endl
    				 << endl
    				 << "Player 1 ist an der Reihe." << endl;
    
    		cin >> iEingabe;
    			//	iEingabe = getch();
    			system("cls");
    		}
    		while(iEingabe > 9 || iEingabe < 1 );
    
    		switch(iEingabe)
    		{
    			case 1:
    				cFeld1 = cPlayer1;
    				break;
    
    			case 2:
    				cFeld2 = cPlayer1;
    				break;
    
    			case 3:
    				cFeld3 = cPlayer1;
    				break;
    
    			case 4:
    				cFeld4 = cPlayer1;
    				break;
    
    			case 5:
    				cFeld5 = cPlayer1;
    				break;
    
    			case 6:
    				cFeld6 = cPlayer1;
    				break;
    
    			case 7:
    				cFeld7 = cPlayer1;
    				break;
    
    			case 8:
    				cFeld8 = cPlayer1;
    				break;
    
    			case 9:
    				cFeld9 = cPlayer1;
    				break;
    		}
    
    		/* Zu Player 2 */
    		do
    		{
    			iEingabe = 0 ;
    
    			cout << cFeld1 << " | " << cFeld2 << " | " << cFeld3 << endl
    				 <<          "--+-" <<          "--+--" << endl
    				 << cFeld4 << " | " << cFeld5 << " | " << cFeld6 << endl
    				 <<          "--+-" <<          "--+--" << endl
    				 << cFeld7 << " | " << cFeld8 << " | " << cFeld9 << endl
    				 << endl
    				 << "Player 2 ist an der Reihe." << endl;
    
    			cin >> iEingabe;
    			//iEingabe = getch();
    			system("cls");
    		}
    		while(iEingabe > 9 || iEingabe < 1 );
    
    		switch(iEingabe)
    		{
    			case 1:
    				cFeld1 = cPlayer2;
    				break;
    
    			case 2:
    				cFeld2 = cPlayer2;
    				break;
    
    			case 3:
    				cFeld3 = cPlayer2;
    				break;
    
    			case 4:
    				cFeld4 = cPlayer2;
    				break;
    
    			case 5:
    				cFeld5 = cPlayer2;
    				break;
    
    			case 6:
    				cFeld6 = cPlayer2;
    				break;
    
    			case 7:
    				cFeld7 = cPlayer2;
    				break;
    
    			case 8:
    				cFeld8 = cPlayer2;
    				break;
    
    			case 9:
    				cFeld9 = cPlayer2;
    				break;
    		}
    
    	}
    	system("pause>nul");
    	return 0;
    }
    


  • while(cFeld1,cFeld2 != 'X') 
    //und 
    while(cFeld1 && cFeld2 != 'X')
    

    Geht so nicht.

    Ist zwar jetzt nur Fleißarbeit, aber es geht so:

    while(cFeld != 'X' && cFeld2 != 'X')
    


  • Cybertec schrieb:

    while(cFeld1,cFeld2 != 'X') 
    //und 
    while(cFeld1 && cFeld2 != 'X')
    

    Geht so nicht.

    Ist zwar jetzt nur Fleißarbeit, aber es geht so:

    while(cFeld != 'X' && cFeld2 != 'X')
    

    Nichts anderes wurde dir oben gesagt: Du sollst && verwenden und Komma funktioniert nicht, weil du jeden Wert einzeln prüfen musst.



  • ja meinte (↓) ich ja sorry

    while(cFeld1 != 'X' && cFeld2 != 'X')
    

    okay... aber warum geht es trozdem nicht wenn ich es so mache???



  • "Es funktioniert nicht" ist keine passende Fehlerbeschreibung.



  • Das heisst was?
    Was muss ich dann machen das es geht?



  • while((cFeld1 != cPlayer1 || cFeld2 != cPlayer1 || cFeld3 != cPlayer1) && ....)
    


  • Mir ist gerade noch etwas aufgefallen:
    Wenn ich schreibe :

    while(cFeld1 != 'X' && cFeld2 != 'X' && cFeld3 != 'X' || cFeld4 != 'X' && cFeld5 != 'X' && cFeld6 != 'X' )
    

    dann beendet er nur, wenn entweder in feld 1,2, und 3 ein 'x' ist UND in 4,5 und 6 kein 'O' oder wenn in 4,5 oder 6 ein 'X' ist aber KEINS in 1,2 oder 3 ...



  • Ja aber bei der Schreibweise, beendet er dann ja schon, wenn bei 1, 2 ODER 3 ein 'X' ist... der soll ja erst beenden, wenn bei 1,2 UND 3 ein 'X' ist...



  • Meins ist richtig. Ich versuche es dir zu erklären:

    Wenn nirgends ein x steht, dann ist feld1 != 'X' -> true
    folglich steht im while(true || true || true) -> true das programm läuft weiter

    nehmen wir an feld 1 ist nun X dann ist feld1 != 'X' -> false
    folglich steht im while(false||true||true) -> true das programm läuft weiter

    nehmen wir an feld 1 und feld 2 ist nun X dann ist feld1 != 'X' -> false
    folglich steht im while(false||false||true) -> true das programm läuft weiter

    wenn jetzt feld 1, feld 2 und feld 3 = 'X' sind, dann sind sie alle false
    folglich steht im while(false || false || false) -> false schleife endet



  • Ah stimmt...
    das erscheint mir logisch... danke ich werds ausprbieren, und wenn es nicht funkt. werdich mich wieder melden...
    Danke aber erst mal...



  • Ich habe mir dran auch gerade meinen Kopf zerbrochen bis ich es mir mal aufschrieb...



  • Ok muss leider sagen hat nicht funzt...
    weis nicht woran es liegt... bin zu doof : D
    naja ich werde mal meinen Freund / Kollegen fragen... der macht das auch beruflich... der kann mir bestimmt helfen, weiss hallt nur nicht wann ich den wieder sehe...
    naja ich bedanke mich trozdem...



  • Bei mir gehts... Bitte bachte die Klammern und das UND

    while((cFeld1 != cPlayer1 || cFeld2 != cPlayer1 || cFeld3 != cPlayer1) && (cFeld4 != cPlayer1 || cFeld5 != cPlayer1 || cFeld6 != cPlayer1))



  • Ja hab ich.. aber weiss nicht woran es liegt... naja egal



  • WOW... es geht...
    als ich es von dir copy hatte gings DANKEEEE
    ich denke ich hatte mich vertippt oder so...
    wirklich cool : D so schnell und es funzt... 😃 danke 😉



  • Falls ihr es mal sehen wollt... ich habe es bis auf ein paar kleinigkeiten fertig.
    Aber hier ist der Code:

    /*Tic-Tac-Toe*/
    #include <iostream>
    #include <conio.h>
    
    using namespace std;
    
    int main()
    {
    	char cFeld1 = '1',
    			 cFeld2 = '2',
    			 cFeld3 = '3',
    			 cFeld4 = '4',
    			 cFeld5 = '5',
    			 cFeld6 = '6',
    			 cFeld7 = '7',
    			 cFeld8 = '8',
    			 cFeld9 = '9';
    
    		char cPlayer1 = 'X',
    			 cPlayer2 = 'O';
    
    		char cjn;
    
    		int iEingabe = 0 ;
    
    		/* Anleitung */
    		cout << "Bitte gebe die Zahl des Feldes ein, und bestätige mit der [Enter]-Taste!";
    		system("pause>nul");
    
    	do
    	{
    
    		/* Zu Player 1 */
    		wieder1:
    		system("cls");
    		do
    		{
    			iEingabe = 0 ;
    
    			cout << cFeld1 << " | " << cFeld2 << " | " << cFeld3 << endl
    				 <<          "--+-" <<          "--+--" << endl
    				 << cFeld4 << " | " << cFeld5 << " | " << cFeld6 << endl
    				 <<          "--+-" <<          "--+--" << endl
    				 << cFeld7 << " | " << cFeld8 << " | " << cFeld9 << endl
    				 << endl
    				 << "Player 1 ist an der Reihe." << endl;
    
    		cin >> iEingabe;
    			//	iEingabe = getch();
    			system("cls");
    		}
    		while(iEingabe > 9 || iEingabe < 1 );
    
    		switch(iEingabe)
    		{
    			case 1:
    				if(cFeld1 == '1')
    				{
    					cFeld1 = cPlayer1;
    				}
    				else
    				{
    					cout << "Feld schon belegt!";
    					system("pause>nul");
    					goto wieder1;
    				}
    					break;
    
    			case 2:
    				if(cFeld2 == '2')
    				{
    					cFeld2 = cPlayer1;
    				}
    				else
    				{
    					cout << "Feld schon belegt!";
    					system("pause>nul");
    					goto wieder1;
    				}
    				break;
    
    			case 3:
    				if(cFeld3 == '3')
    				{
    					cFeld3 = cPlayer1;
    				}
    				else
    				{
    					cout << "Feld schon belegt!";
    					system("pause>nul");
    					goto wieder1;
    				}
    				break;
    
    			case 4:
    				if(cFeld4 == '4')
    				{
    					cFeld4 = cPlayer1;
    				}
    				else
    				{
    					cout << "Feld schon belegt!";
    					system("pause>nul");
    					goto wieder1;
    				}
    				break;
    
    			case 5:
    				if(cFeld5 == '5')
    				{
    					cFeld5 = cPlayer1;
    				}
    				else
    				{
    					cout << "Feld schon belegt!";
    					system("pause>nul");
    					goto wieder1;
    				}
    				break;
    
    			case 6:
    				if(cFeld6 == '6')
    				{
    					cFeld6 = cPlayer1;
    				}
    				else
    				{
    					cout << "Feld schon belegt!";
    					system("pause>nul");
    					goto wieder1;
    				}
    				break;
    
    			case 7:
    				if(cFeld7 == '7')
    				{
    					cFeld7 = cPlayer1;
    				}
    				else
    				{
    					cout << "Feld schon belegt!";
    					system("pause>nul");
    					goto wieder1;
    				}
    				break;
    
    			case 8:
    				if(cFeld8 == '8')
    				{
    					cFeld8 = cPlayer1;
    				}
    				else
    				{
    					cout << "Feld schon belegt!";
    					system("pause>nul");
    					goto wieder1;
    				}
    				break;
    
    			case 9:
    				if(cFeld9 == '9')
    				{
    					cFeld9 = cPlayer1;
    				}
    				else
    				{
    					cout << "Feld schon belegt!";
    					system("pause>nul");
    					goto wieder1;
    				}
    				break;
    		}
    
    		/* Zu Player 2 */
    		wieder2:
    		system("cls");
    		do
    		{
    			iEingabe = 0 ;
    
    			cout << cFeld1 << " | " << cFeld2 << " | " << cFeld3 << endl
    				 <<          "--+-" <<          "--+--" << endl
    				 << cFeld4 << " | " << cFeld5 << " | " << cFeld6 << endl
    				 <<          "--+-" <<          "--+--" << endl
    				 << cFeld7 << " | " << cFeld8 << " | " << cFeld9 << endl
    				 << endl
    				 << "Player 2 ist an der Reihe." << endl;
    
    			cin >> iEingabe;
    			//iEingabe = getch();
    			system("cls");
    		}
    		while(iEingabe > 9 || iEingabe < 1 );
    
    		switch(iEingabe)
    		{
    			case 1:
    				if(cFeld1 == '1')
    				{
    					cFeld1 = cPlayer2;
    				}
    				else
    				{
    					cout << "Feld schon belegt!";
    					system("pause>nul");
    					goto wieder2;
    				}
    				break;
    
    			case 2:
    				if(cFeld2 == '2')
    				{
    					cFeld2 = cPlayer2;
    				}
    				else
    				{
    					cout << "Feld schon belegt!";
    					system("pause>nul");
    					goto wieder2;
    				}
    				break;
    
    			case 3:
    				if(cFeld3 == '3')
    				{
    					cFeld3 = cPlayer2;
    				}
    				else
    				{
    					cout << "Feld schon belegt!";
    					system("pause>nul");
    					goto wieder2;
    				}
    				break;
    
    			case 4:
    				if(cFeld4 == '4')
    				{
    					cFeld4 = cPlayer2;
    				}
    				else
    				{
    					cout << "Feld schon belegt!";
    					system("pause>nul");
    					goto wieder2;
    				}
    				break;
    
    			case 5:
    				if(cFeld5 == '5')
    				{
    					cFeld5 = cPlayer2;
    				}
    				else
    				{
    					cout << "Feld schon belegt!";
    					system("pause>nul");
    					goto wieder2;
    				}
    				break;
    
    			case 6:
    				if(cFeld6 == '6')
    				{
    					cFeld6 = cPlayer2;
    				}
    				else
    				{
    					cout << "Feld schon belegt!";
    					system("pause>nul");
    					goto wieder2;
    				}
    				break;
    
    			case 7:
    				if(cFeld7 == '7')
    				{
    					cFeld7 = cPlayer2;
    				}
    				else
    				{
    					cout << "Feld schon belegt!";
    					system("pause>nul");
    					goto wieder2;
    				}
    				break;
    
    			case 8:
    				if(cFeld8 == '8')
    				{
    					cFeld8 = cPlayer2;
    				}
    				else
    				{
    					cout << "Feld schon belegt!";
    					system("pause>nul");
    					goto wieder2;
    				}
    				break;
    
    			case 9:
    				if(cFeld9 == '9')
    				{
    					cFeld9 = cPlayer2;
    				}
    				else
    				{
    					cout << "Feld schon belegt!";
    					system("pause>nul");
    					goto wieder2;
    				}
    				break;
    		}
    
    	}
    	while((cFeld1 != cPlayer1 || cFeld2 != cPlayer1 || cFeld3 != cPlayer1) && (cFeld4 != cPlayer1 || cFeld5 != cPlayer1 || cFeld6 != cPlayer1) && (cFeld7 != cPlayer1 || cFeld8 != cPlayer1 || cFeld9 != cPlayer1)&& (cFeld1 != cPlayer1 || cFeld4 != cPlayer1 || cFeld7 != cPlayer1)&& (cFeld2 != cPlayer1 || cFeld5 != cPlayer1 || cFeld8 != cPlayer1)&& (cFeld3 != cPlayer1 || cFeld6 != cPlayer1 || cFeld9 != cPlayer1)&& (cFeld3 != cPlayer1 || cFeld5 != cPlayer1 || cFeld7 != cPlayer1)&& (cFeld1 != cPlayer1 || cFeld5 != cPlayer1 || cFeld9 != cPlayer1)&&//Möglichkeiten zu Player 1
    		  (cFeld1 != cPlayer2 || cFeld2 != cPlayer2 || cFeld3 != cPlayer2) && (cFeld4 != cPlayer2 || cFeld5 != cPlayer2 || cFeld6 != cPlayer2) && (cFeld7 != cPlayer2 || cFeld8 != cPlayer2 || cFeld9 != cPlayer2)&& (cFeld1 != cPlayer2 || cFeld4 != cPlayer2 || cFeld7 != cPlayer2)&& (cFeld2 != cPlayer2 || cFeld5 != cPlayer2 || cFeld8 != cPlayer2)&& (cFeld3 != cPlayer2 || cFeld6 != cPlayer2 || cFeld9 != cPlayer2)&& (cFeld3 != cPlayer2 || cFeld5 != cPlayer2 || cFeld7 != cPlayer2)&& (cFeld1 != cPlayer2 || cFeld5 != cPlayer2 || cFeld9 != cPlayer2));//Möglichkeiten zu Player 2
    	cout << "Player wins" << endl
    		 << "Nocheinmal? (j/n)";
    	cin >> cjn;
    	if(cjn == 'j')
    	{
    		goto wieder1;
    		system("cls");
    	}
    	else
    	{
    		return 0;
    	}
    }
    

    Und ich möchte mich noch einmal bedanken! 👍 👍 👍



  • Und wenn du noch ein wenig weiter gelesen hast, dann überarbeitest du das ganze erstmal gründlich ^^



  • Wiso was ist denn noch nicht so gut???
    Mhh man merkt wohl das ich noch en anfänger bin 😃


Anmelden zum Antworten