Liczby losowe
Ostatnio zmodyfikowano 2017-01-01 02:08
wokub Temat założony przez niniejszego użytkownika |
Liczby losowe » 2016-12-26 11:07:49 Witam. Mam problem z jednym zadaniem i nie wiem jak się z tym uporać. Spróbuję przesłać tylko kawałek kodu, aby nikt z mojej grupy tego czasem nie skopiował, jakby ktoś zaczął szukać. Mój problem polega na tym, że podczas losowania elementów 0-9 czasem zmienia się wartość wpisana przeze mnie. Np wpisuję 1 w 1 polu, a z randomowych liczb komputer zmienia mi tego wartość (czasem). W skrócie mój kod stworzony na potrzebę tego wątku. void nazwafunkcji( void ) { int wybor; int liczba; srand( time( NULL ) ); liczba = rand() % 4; std::cin >> wybor; if( wybor == 1 ) { plansza[ 0 ][ 0 ] = "x"; if( liczba == 2 ) plansza[ 0 ][ 1 ] = "o"; if( liczba == 3 ) plansza[ 0 ][ 2 ] = "o"; if( liczba == 4 ) plansza[ 1 ][ 0 ] = "o"; } if( wybor == 2 ) { plansza[ 0 ][ 1 ] = "x"; if( liczba == 1 ) plansza[ 0 ][ 0 ] = "o"; if( liczba == 3 ) plansza[ 0 ][ 2 ] = "o"; if( liczba == 4 ) plansza[ 1 ][ 0 ] = "o"; } if( wybor == 3 ) { plansza[ 0 ][ 2 ] = "x"; if( liczba == 2 ) plansza[ 0 ][ 1 ] = "o"; if( liczba == 1 ) plansza[ 0 ][ 0 ] = "o"; if( liczba == 4 ) plansza[ 1 ][ 0 ] = "o"; } if( wybor == 4 ) { plansza[ 1 ][ 0 ] = "x"; if( liczba == 2 ) plansza[ 0 ][ 1 ] = "o"; if( liczba == 3 ) plansza[ 0 ][ 2 ] = "o"; if( liczba == 1 ) plansza[ 0 ][ 0 ] = "o"; } return nazwafunkcji; }
Scenariusz wygląda tak : Naciskam 1, w 1 polu pojawia się X a np. w 2 pojawia się "O" i następnie po wpisaniu przeze mnie 3, chcę aby X pojawiło się w 3 polu, a "O" w jedynym wolnym, nie na 1 czy 2, które są już wypełnione. Ktoś ma jakiś pomysł? Ja juz wysiadam. Od siebie dodam, że mam już zrobione, że return cofam mnie od początku, a nie, że jest to jednorazowe. Problemem jest format tego x i o Nie wiem, może powinienem zrobić coś w stylu if( liczba == 3 && plansza[][] == !"x" ) plansza[ 0 ][ 2 ] = "o"
Ale to wątpię, napisałem to na szybko, pewnie format zły. |
|
czaffik |
» 2017-01-01 01:27:25 Nie wiem czy chcesz aby zawartość pola nie była nadpisywana czy żeby tylko 'o' nie nadpisywało 'x'. W pierwszym przypadku można wypełnić tablicę na początku jakimiś wartościami które oznaczają że pole jest puste i że można je nadpisać (takie znaczniki) np znacznikiem może być znak 'e'; przed wpisywaniem czegokolwiek do pola trzeba sprawdzić warunek: if( plansza[ 0 ][ 1 ] == "e" ) plansza[ 0 ][ 1 ] = "o";
W drugim przypadku podobnie, tylko trzeba 'e' zmienić na 'x' i sprawdzić czy nie jest różne: if( plansza[ 0 ][ 1 ] != "x" ) plansza[ 0 ][ 1 ] = "o";
|
|
carlosmay |
» 2017-01-01 02:08:42 komputer zmienia mi tego wartość (czasem). |
Takie błędy są najfajniejsze :). Proponuje ułatwić sobie życie i jak najszybciej poznać działanie debuggera. |
|
« 1 » |