1 / 1 / 1
Регистрация: 12.08.2014
Сообщений: 65

Постоянно возвращается 0 из функции

25.09.2015, 12:45. Показов 2042. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Из функции-члена worldAnalizer() - возвращается 0, в функции-члены - robotSet() и playerSet();
В конце функции-члена worldAnalizer() - Должно возвращаться значение 1 если ни 1-но условие не выполнено, но оно возвращает 0 и из-за этого игра стоит после первого хода.

Игра крестики-нолики.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
#include <iostream>
#include <cstdlib>
 
class nWorld{
public:
    char czWorld[9] = {'-','-','-','-','-','-','-','-','-'};
    //Functions
    void dispWorld();
    int playerSet();
    int robotSet();
    int gameStart();
    int arrayCloser();
    int worldAnalizer(char analizer);
};
 
nWorld world;
 
int nWorld::worldAnalizer(char analizer){
    //Horizontal Scan
    if (czWorld[0] == analizer && czWorld[1] == analizer && czWorld[2] == analizer){
        if (analizer == 'X'){
            std::cout << "\tPlayer Win!\n";
            return 0;
        } else {
            std::cout << "\tComputer Win!\n";
            return 0;
        }
    }
    if (czWorld[3] == analizer && czWorld[4] == analizer && czWorld[5] == analizer){
        if (analizer == 'X'){
            std::cout << "\tPlayer Win!\n";
            return 0;
        } else {
            std::cout << "\tComputer Win!\n";
            return 0;
        }
    }
    if (czWorld[6] == analizer && czWorld[7] == analizer && czWorld[8] == analizer){
        if (analizer == 'X'){
            std::cout << "\tPlayer Win!\n";
            return 0;
        } else {
            std::cout << "\tComputer Win!\n";
            return 0;
        }
    }
    //Vertical Scan
    if (czWorld[0] == analizer && czWorld[3] == analizer && czWorld[6] == analizer){
        if (analizer == 'X'){
            std::cout << "\tPlayer Win!\n";
            return 0;
        } else {
            std::cout << "\tComputer Win!\n";
            return 0;
        }
    }
    if (czWorld[1] == analizer && czWorld[4] == analizer && czWorld[7] == analizer){
        if (analizer == 'X'){
            std::cout << "\tPlayer Win!\n";
            return 0;
        } else {
            std::cout << "\tComputer Win!\n";
            return 0;
        }
    }
    if (czWorld[2] == analizer && czWorld[5] == analizer && czWorld[8] == analizer){
        if (analizer == 'X'){
            std::cout << "\tPlayer Win!";
            return 0;
        } else {
            std::cout << "\tComputer Win!";
            return 0;
        }
    }
    //Diagonal
    if (czWorld[0] == analizer && czWorld[4] == analizer && czWorld[8] == analizer){
        if (analizer == 'X'){
            std::cout << "\tPlayer Win!\n";
            return 0;
        } else {
            std::cout << "\tComputer Win!\n";
            return 0;
        }
    }
    if (czWorld[2] == analizer && czWorld[4] == analizer && czWorld[6] == analizer){
        if (analizer == 'X'){
            std::cout << "\tPlayer Win!\n";
            return 0;
        } else {
            std::cout << "\tComputer Win!\n";
            return 0;
        }
    }
    return 1;
}
 
int reBoot(int nVal){
    if (nVal == 1){
        world.robotSet();
    } else {
        world.playerSet();
    }
}
 
int nWorld::arrayCloser(){
    int nCopuWorld = 0;
    for (int index = 0; index < 9; index++){
        if (czWorld[index] == '-'){
            nCopuWorld++;
        }
    }
 
    if (nCopuWorld == 0){
        std::cout << "Нет пустых ячеек!";
        return 1;
    }
    return 0;
}
 
int nWorld::robotSet(){
 
        if (arrayCloser() == 1){
            std::cout << "Game Over!";
            return 0;
        } else {
            int tempVal = rand()%10;
            if (czWorld[tempVal] == '-'){
                czWorld[tempVal] = 'O';
            } else {
                reBoot(1);
            }
        }
        if (worldAnalizer('O') == 0){
            return 0;
        }
}
 
int nWorld::playerSet(){
    //Player - X
        if (arrayCloser() == 1){
            std::cout << "Game Over!";
            return 0;
        } else {
            int tempVal;
            std::cout << "Введите значение: ";
            std::cin >> tempVal;
            while (tempVal > 9 || tempVal < 0){
                std::cout << "Не верное значение, введите верное значение: (0-9): ";
                std::cin >> tempVal;
            }
            if (czWorld[tempVal] == '-'){
                czWorld[tempVal] = 'X';
            } else {
                std::cout << "Эта ячейка занята! Введите другое значение: ";
                reBoot(2);
                }
            if (czWorld[tempVal] == '-'){
                czWorld[tempVal] = 'X';
            }
            }
            if (worldAnalizer('X') == 0){
                return 0;
            }
}
 
void nWorld::dispWorld(){
        std::cout << "\t|-" << czWorld[0] <<"-|-" << czWorld[1] <<  "-|-" << czWorld[2] <<  "-|\n"
                  << "\t|-" << czWorld[3] <<"-|-" << czWorld[4] <<  "-|-" << czWorld[5] <<  "-|\n"
                  << "\t|-" << czWorld[6] <<"-|-" << czWorld[7] <<  "-|-" << czWorld[8] <<  "-|\n" << std::endl;
}
 
int nWorld::gameStart(){
    static int tempStat = 1;
    if (tempStat == 1){
        if (world.playerSet() == 0){
            return 0;
        }
        tempStat++;
    } else {
        if (world.robotSet() == 0){
            return 0;
        }
        tempStat--;
    }
}
 
int main(){
    setlocale(LC_ALL, "Russian");
    std::cout << "0 1 2\n3 4 5\n6 7 8\n";
    for (;;){
        world.dispWorld();
        if (world.gameStart() == 0){
            break;
        }
    }
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.09.2015, 12:45
Ответы с готовыми решениями:

Из функции возвращается не то значение
Вот функция, программа возвращает -1, если все элементы равны. Этот кусок работает(если все одинаковые). Но если числа разные, то программа...

Не возвращается результат функции, что делать?
#include &lt;iostream&gt; #define N 10 using namespace std; int *SortedArray(int a) { int m; m = a; for (int i =...

Разработать шаблон функции, в которую передается массив и размер и возвращается индекс минимального элемента
Разработать шаблон функции, в которую передается массив и размер и возвращается индекс минимального элемента массива.

21
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
26.09.2015, 18:21
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от UltraPenguin Посмотреть сообщение
Не могли бы вы проиллюстрировать вашу мысль примерами?
Я проиллюстрирую примерами. Одна моя знакомая бабка написала кот, все работало. Потом она решила одну функцию заменить макросом - и все перестало работать. Как выяснилось - потому, что она вызывалась без скобок в теле условия, а макрос там же раскрывался как есть, и в условии выполнялся только первый оператор, а остальные отрабатывали в любом случае, так как не являлись единым блоком с первым.
0
233 / 99 / 27
Регистрация: 20.03.2014
Сообщений: 304
28.09.2015, 11:00
_Ivana, стоп стоп. Макросы это отдельная тема. Там свои грабли (куча их) и свои рекомендации. Разве я что-то говорил о макросах? К тому же ваша знакомая должна была понимать, что она делает, заменяя вызов функции макросом, и осознавать возможные последствия. Я бы к примеру вообще не рекомендовал бы использовать макрофункции на начальном этапе обучения ремеслу, они только запутывают. Чуть позже, когда освоятся обычные функции и процедуры, можно ввести макросы как один из видов оптимизации наряду с инлайнами и пр.

Добавлено через 1 минуту
Или как один из видов внедрения скрытых бэкдоров
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.09.2015, 11:00

Разработайте шаблон функции, в которую передается массив и возвращается произведение положительных элементов массива
Разработайте шаблон функции, в которую передается массив и возвращается произведение положительных элементов массива.

Передача данных DataContract - постоянно возвращается ноль
Добрый день, изучаю WCF, хотел попробовать передать пользовательские типы данных public class StatusWMIRequest { ...

Если возвращается переменная ссылочного типа, то возвращается объект или просто ссылка
Почему-то авторы всегда акцентируют внимание на передачу параметров в функцию, а на возврат не очень: using System; using...

Не возвращается значение из функции
вот такая функция: function auth() { ...

Не возвращается значение указателя из функции.
Подробное описание задания: В программе описать 3 функции. Функция f1 осуществляет ввод m-размера одномерного массива, а-значений...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Опции темы

Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru