Проблема в исполнении пользовательских функций на языке Си - PullRequest
0 голосов
/ 12 октября 2019

Я занимался разработкой программы ac, в которой я создал функцию для другой цели, но немногие из них не выполняются должным образом, т.е. они выполняются некоторое время, а иногда нет, просто выполняется первая строка, где инициализируется переменная, и послечто он непосредственно переходит в секцию возврата и дает инициализированное значение переменной, даже если данное условие истинно. Вот код одной из функций:

int thirdMove()
{
      int r=0;
     if(sq[5]=='0')
     {
        if(sq[1]=='X')
        {
             if(sq[2]=='X' && sq[3]=='0' && sq[7]=='7')
             {
                   r=7;
             }
             else if(sq[2]=='X' && sq[3]=='0' && sq[7]=='X')
             {
                   r=4;
             }
             else if(sq[3]=='X' && sq[2]=='0' && sq[8]=='8')
             {  
                 r=8;
             }
             else if(sq[3]=='X' && sq[2]=='0' && sq[8]=='X')
             {
                    while(1)
                   {
                       r=random();
                       if(r==4 || r==6)
                       {
                          break;
                       }
                       else
                       {
                          continue;
                       }
                    }
             }
             else if(sq[4]=='X' && sq[7]=='0' && sq[3]=='3')
             {
                r=3;
             }
             else if(sq[4]=='X' && sq[7]=='0' && sq[3]=='X')
             {
                r=2;
             }
             else if(sq[6]=='X' && sq[3]=='0' && sq[7]=='7')
             {
                r=7;
             }
             else if(sq[6]=='X' && sq[3]=='0' && sq[7]=='X')
             {
                r=4;
             }
             else if(sq[7]=='X' && sq[3]=='0' && sq[6]=='6')
             {
                r=6;
             }
             else if(sq[7]=='X' && sq[3]=='0' && sq[6]=='X')
             {
                while(1)
                 {
                    r=random();
                    if(r==2 || r==8)
                     {
                         break;
                     }
                    else
                     {
                         continue;
                     }
                 }
             }
             else if(sq[8]=='X' && sq[7]=='0' && sq[3]=='3')
             {
                 r=3;
             }
             else if(sq[8]=='X' && sq[7]=='0' && sq[3]=='X')
             {
                 r=2;
             }
             else if(sq[9]=='X' && sq[2]=='0' && sq[8]=='8')
             {
                 r=8;
             }
             else if(sq[9]=='X' && sq[2]=='0' && sq[8]=='X')
             {
                 r=7;
             }
             else if(sq[9]=='X' && sq[4]=='0' && sq[6]=='6')
             {
                 r=6;
             }
             else if(sq[9]=='X' && sq[4]=='0' && sq[6]=='X')
             {
                 r=3;
             }
             else if(sq[9]=='X' && sq[6]=='0' &&  sq[4]=='4')
             {
                 r=4;
             }
             else if(sq[9]=='X' && sq[6]=='0' &&  sq[4]=='X')
             {
                 r=7;
             }
             else if(sq[9]=='X' && sq[8]=='0' &&  sq[2]=='2')
             {
                  r=2;
             }
             else if(sq[9]=='X' && sq[8]=='0' &&  sq[2]=='X')
             {
                 r=3;
             }
        }   
        else if(sq[2]=='X')
        {
           if(sq[3]=='X' && sq[1]=='0' && sq[9]=='9')
           {
               r=9;
           } 
           else if(sq[3]=='X' && sq[1]=='0' && sq[9]=='X')
           {
               r=6;
           }
           else if(sq[4]=='X' && sq[1]=='0' && sq[9]=='9')
           {
               r=9;
           }
           else if(sq[4]=='X' && sq[1]=='0' && sq[9]=='X')
           {
                 while(1)
                 {
                    r=random();
                    if(r==3 || r==7)
                     {
                         break;
                     }
                    else
                     {
                         continue;
                     }
                 }
           }
           else if(sq[6]=='X' && sq[3]=='0' && sq[7]=='7')
           {
               r=7;
           }
           else if(sq[6]=='X' && sq[3]=='0' && sq[7]=='X')
           {
                 while(1)
                 {
                    r=random();
                    if(r==1 || r==9)
                     {
                         break;
                     }
                    else
                     {
                         continue;
                     }
                 }
           }
           else if(sq[7]=='X' && sq[1]=='0' && sq[9]=='9')
           {
               r=9;
           }
           else if(sq[7]=='X' && sq[1]=='0' && sq[9]=='X')
           {
               r=8;
           }
           else if(sq[8]=='X' && sq[1]=='0' && sq[9]=='9')
           {
               r=9;
           }
           else if(sq[8]=='X' && sq[1]=='0' && sq[9]=='X')
           {
               r=7;
           }
           else if(sq[8]=='X' && sq[3]=='0' && sq[7]=='7')
           {
               r=7;
           }
           else if(sq[8]=='X' && sq[3]=='0' && sq[7]=='X')
           {
                r=9; 
           }
           else if(sq[8]=='X' && sq[7]=='0' && sq[3]=='3')
           {
               r=3;
           }
           else if(sq[8]=='X' && sq[7]=='0' && sq[3]=='X')
           {
               r=1;
           }
           else if(sq[8]=='X' && sq[9]=='0' && sq[1]=='1')
           {
               r=1;
           }
           else if(sq[8]=='X' && sq[9]=='0' && sq[1]=='X')
           {
                r=7; 
           }
           else if(sq[9]=='X' && sq[3]=='0' && sq[7]=='7')
           {
               r=7;
           }
           else if(sq[9]=='X' && sq[3]=='0' && sq[7]=='X')
           {
               r=8;
           }    
        }
        else if(sq[3]=='X')
        {
            if(sq[4]=='X' && sq[1]=='0' && sq[9]=='9')
            {
                r=9;
            }
            else if(sq[4]=='X' && sq[1]=='0' && sq[9]=='X')
            {
                r=6;
            }
            else if(sq[6]=='X' && sq[9]=='0' && sq[1]=='1')
            {
                r=1;
            }
            else if(sq[6]=='X' && sq[9]=='0' && sq[1]=='X')
            {
                r=2;
            }
            else if(sq[7]=='X' && sq[2]=='0' && sq[8]=='8')
            {
                r=8;
            }
            else if(sq[7]=='X' && sq[2]=='0' && sq[8]=='X')
            {
                r=9;
            }
            else if(sq[7]=='X' && sq[4]=='0' && sq[6]=='6')
            {
                r=6;
            }
            else if(sq[7]=='X' && sq[4]=='0' && sq[6]=='X')
            {
                r=9;
            }
            else if(sq[7]=='X' && sq[6]=='0' && sq[4]=='4')
            {
                r=4;
            }
            else if(sq[7]=='X' && sq[6]=='0' && sq[4]=='X')
            {
                r=1;
            }
            else if(sq[7]=='X' && sq[8]=='0' && sq[2]=='2')
            {
                r=2;
            }
            else if(sq[7]=='X' && sq[8]=='0' && sq[2]=='X')
            {
                r=1;
            }
            else if(sq[8]=='X' && sq[9]=='0' && sq[1]=='1')
            {
                r=1;
            }
            else if(sq[8]=='X' && sq[9]=='0' && sq[1]=='X')
            {
                r=2;
            }
            else if(sq[9]=='X' && sq[7]=='0' && sq[4]=='4')
            {
                r=4;
            }
            else if(sq[9]=='X' && sq[7]=='0' && sq[4]=='X')
            {
                 while(1)
                 {
                    r=random();
                    if(r==2 || r==8)
                     {
                         break;
                     }
                    else
                     {
                         continue;
                     }
                 }
            }
        }
        else if(sq[4]=='X')
        {

        }
     }
     else if(sq[5]=='X')
     {

     }
   return r;
}

В этой функции она должна выполнить некоторые условия, если они истинны, тогда она должна вернуть значение в соответствии с условием, но она возвращает только 0, чтоприсваивается переменной r. При отладке функции она заканчивается на int r=0; и возвращает неправильное значение, даже если условия выполняются. Точно так же у меня есть еще две функции с таким же типом операций, и они вызывают ту же проблему. Пожалуйста, помогите мне решить эту проблему и, пожалуйста, упростите ваши предложения или решения для лучшего понимания меня, поскольку я новичок. Спасибо

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