Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Liczby losowe

Ostatnio zmodyfikowano 2017-01-01 02:08
Autor Wiadomość
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.
C/C++
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
C/C++
if( liczba == 3 && plansza[][] == !"x" )
plansza[ 0 ][ 2 ] = "o"
Ale to wątpię, napisałem to na szybko, pewnie format zły.

P-155443
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:
C/C++
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:
C/C++
if( plansza[ 0 ][ 1 ] != "x" ) plansza[ 0 ][ 1 ] = "o";

P-155756
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.
P-155757
« 1 »
  Strona 1 z 1