Форум программистов, компьютерный форум CyberForum.ru

Почему функция возвращает неправильное значение - C++

Восстановить пароль Регистрация
 
007imran007
1 / 1 / 0
Регистрация: 08.07.2012
Сообщений: 83
09.05.2014, 19:20     Почему функция возвращает неправильное значение #1
Пробовал дебажил функцию и каждый раз проверка проходит условие, хотя оно выполняется... в итоге возвращается false
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//проверка выиграшного хода
bool winBot()
{
    for(int i(0); i < 3; i++)
    {
            if( (((table[i][0] && table[i][1]) == 'O') && (table[i][2] != 'X')) )
                return true;
        else
            if( (((table[0][i] && table[1][i]) == 'O') && (table[2][i] != 'X')) )
                return true; 
        else
            if( (((table[0][0] && table[1][1]) == 'O') && (table[2][2] != 'X')) || (((table[0][2] && table[1][1]) == 'O') && (table[2][0] != 'X')) )  
                return true; 
    }
 
    //иначе
    return false;
}
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,061
09.05.2014, 19:23     Почему функция возвращает неправильное значение #2
Цитата Сообщение от 007imran007 Посмотреть сообщение
(table[i][0] && table[i][1]) == 'O'
что ты этим хотел сказать?
007imran007
1 / 1 / 0
Регистрация: 08.07.2012
Сообщений: 83
09.05.2014, 19:25  [ТС]     Почему функция возвращает неправильное значение #3
Цитата Сообщение от ValeryS Посмотреть сообщение
что ты этим хотел сказать?
забыл упомянуть у меня 2-мерный массив (крестики-нолики), я имел ввиду, что если 2 клеточки == 'O' то нужно закрывать 3 и побеждать. i потому что он будет проверять 3 строки в цикле for
ну и table мой массив
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,061
09.05.2014, 19:30     Почему функция возвращает неправильное значение #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от 007imran007 Посмотреть сообщение
я имел ввиду, что если 2 клеточки == 'O' то нужно закрывать 3 и побеждать.
а знаешь что получилось
если table[i][0] истина( не равно 0) и table[i][1] истина то получить истину(1)
1 никак не равен 'O'(0х30) ни при каких условиях

следовательно, что ты хотел нужно записывать так
C++
1
if ( (table[i][0]=='O') && (table[i][1] == 'O') && (table[i][2] != 'X'))
007imran007
1 / 1 / 0
Регистрация: 08.07.2012
Сообщений: 83
09.05.2014, 20:13  [ТС]     Почему функция возвращает неправильное значение #5
Цитата Сообщение от ValeryS Посмотреть сообщение
следовательно, что ты хотел нужно записывать так
Код C++
1
if ( (table[i][0]=='O') && (table[i][1] == 'O') && (table[i][2] != 'X'))
большое спасибо, буду знать теперь))
Yandex
Объявления
09.05.2014, 20:13     Почему функция возвращает неправильное значение
Ответ Создать тему
Опции темы

Текущее время: 22:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru