Почему функция не работает с этим использованием указателя? - PullRequest
0 голосов
/ 16 декабря 2018

Я не знаю, как мне использовать указатель, чтобы получить значение "win" в функции main из функции spr ().Должен ли я определить еще одну переменную, например, resullt и написать ее как:

bool *result;
result=&win;

Вся программа должна работать нормально, но я не могу справиться с использованием указателей.Как вы думаете?Спасибо за помощь!

bool spr(char arr[3][3], bool *win)
{
    if(arr[0][0]==arr[0][1] && arr[0][1]==arr[0][2] || arr[1][0]==arr[1][1] && arr[1][1] ==arr[1][2] || arr[2][0]==arr[2][1] && arr[2][1]==arr[2][2])
    {
        *win=true;      

    }
    else if(arr[0][0]==arr[1][0] && arr[1][0]==arr[2][0] || arr[0][1]==arr[1][1] && arr[1][1]==arr[2][1] || arr[0][2]==arr[1][2] && arr[1][2]==arr[2][2])
    {
        *win=true;

    }
    else if(arr[0][0]==arr[1][1] && arr[1][1]==arr[2][2] || arr[0][2]==arr[1][1] && arr[1][1]==arr[2][0])
    {
        *win=true;

    }
    return *win;
    printf("wygrales");
}

int main()
{
    char arr[3][3]={{' ',' ',' '},{' ',' ',' '}};
    int x1,x2,y1,y2;
    int kolejka=0;
    printf("GRA W KOLKO I KRZYZYYK!");
    Sleep(2000);
    system("cls");


    while((&win)!=true || kolejka <=9)
    {
        printf(" KOLKO: Wprowadz wspodlrzedne: \n");
        scanf("%d",&x1);
        scanf("%d",&y1);
        arr[x1][y1]='O';

        spr(arr,&win);
        wypisz(arr);

        printf("KRZYZYK: Wprowadz wspolrzedne:\n ");
        scanf("%d",&x2);
        scanf("%d",&y2);
        arr[x2][y2]='X';

        spr(arr,&win);
        wypisz(arr);
        kolejka++;
    }
}

1 Ответ

0 голосов
/ 16 декабря 2018

вы нигде не объявляете победу.Кстати, printf("wygrales"); никогда не будет достигнуто, когда вы вернетесь из функции до этого.

int main()
{
  ...
  bool win = false;

  ...
  while(!win || kolejka <=9)
  ...

Но вам не нужно передавать указатель для выигрыша функции spr.Просто верните true, если ваши длинные if s в порядке или false в конце функции.Вы вообще не указали этот указатель.

Вам нужно будет изменить

spr(arr,&win); -> win = spr(arr);

и объявить победу в основном, как в моей первой частиответа;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...