Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 19.10.2021
Сообщений: 28

Анализ результатов игры в крестики-нолики

21.02.2022, 23:44. Показов 2882. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите пожалуйста решить задачу:

Петя и Вася играли в крестики-нолики и не стёрли результаты своей игры. Теперь перед вами табличка 3 × 3, которая осталась после их поединка. Вы хотите понять, выиграл ли кто-то из них или они не доиграли.

На вход программе даётся три строки, кодирующие верхнюю, среднюю и нижнюю строчки игрового поля. Крестик обозначается символом X (английская заглавная буква X), нолик — символом O (заглавная латинская буква O), пустая клетка — точкой.

Если ввод некорректен, то есть такая таблица не могла получиться в ходе настоящей игры, то надо написать в ответ слово Incorrect.

Если таблица корректна и выиграли крестики, то нужно вывести в ответ слова Petya won, если нолики — то Vanya won, а иначе (то есть они не доиграли или сыграли вничью) надо написать Nobody.

Примеры:

X..

OXO

OOO

Ответ: Incorrect (потому что ноликов в конце игры не может быть больше, чем крестиков).

X..

.X.

OO.

Ответ: Nobody (потому что они не доиграли).

XXO

OOX

XOX

Ответ: Nobody (потому что это ничья).

XO.

XO.

X.O

Ответ: Incorrect (крестики уже победили, и ноликов не может быть столько же).

OX.

XOX

X.O


Заранее спасибо
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.02.2022, 23:44
Ответы с готовыми решениями:

Дерево игры крестики нолики
Задача игры с участием двух игроков, например, крестики – нолики. Назовем игрока, проставляющего на игровой доске крестики, игроком x, а...

Бот для игры крестики-нолики
Написал программу крестики-нолики, но у меня игрок против игрока , как добавить бота, самого простого, мне не нужно чтоб он был супер...

Оптимизация кода игры в крестики нолики.
Написал небольшой код буду благодарен если нормальные программисты порекомендуют как его нужно исправить. это игра в крестики нолики 10*10....

2
22.02.2022, 17:25

Не по теме:

Заранее, пожалуйста. :)

0
 Аватар для Hi Lera
2 / 2 / 0
Регистрация: 29.01.2022
Сообщений: 26
22.02.2022, 19:58
Вот решение... Только зачем ты купил курсы в Скилбоксе и сам не делаешь задачи???

#include <iostream>
void CrossZero(std::string text, int *answerVictoryCross, int *answerVictoryZero, int *answerCross, int *answerZero, int *answerPoint, bool *answerGood){
bool good = true;
int cross = 0, zero = 0, point = 0, RowCross = 0, RoWZero = 0, VictoryCross = 0, VictoryZero = 0;

for(int i = 0; i < text.length(); i++){
if(text.length() == 3){
if(text[i] == 'X'){
cross++;
RowCross++;
}else if(text[i] == 'O'){
zero++;
RoWZero++;
}else if(text[i] == '.'){
point++;
}else{
good = false;
break;
}
}else{
good = false;
break;
}
}
if(RowCross == 3){
VictoryCross++;
}else if (RoWZero == 3){
VictoryZero++;
}

(*answerVictoryCross) = VictoryCross;
(*answerVictoryZero)= VictoryZero;
(*answerCross) = cross;
(*answerZero) = zero;
(*answerPoint) = point;
(*answerGood) = good;

}

int main() {
std::string TopRow, MiddleRow, LowerRow, answer;
std::cout << "Task 5. Analysis of the results of the tic-tac-toe game\n";
std::cout << "Enter cross and zero\n";
std::cin >> TopRow >> MiddleRow >> LowerRow;
bool TopRowGood = true, MiddleRowGood = true, LowerRowGood = true;
int cross = 0, zero = 0, point = 0, TopRowCross = 0, TopRowZero = 0, MiddleRoWCross = 0, MiddleRowZero = 0, LowerRowCross = 0, LowerRowZero = 0, VictoryCross = 0, VictoryZero = 0, TopRowVictoryCross = 0, TopRowVictoryZero = 0, MiddleRoWVictoryCross = 0, MiddleRowVictoryZero = 0, LowerRowVictoryCross = 0, LowerRowVictoryZero = 0, TopRowPoint = 0, MiddleRowPoint = 0, LowerRowPoint = 0;

CrossZero(TopRow, &TopRowVictoryCross, &TopRowVictoryZero, &TopRowCross, &TopRowZero, &TopRowPoint, &TopRowGood);
CrossZero(MiddleRow, &MiddleRoWVictoryCross, &MiddleRowVictoryZero, &MiddleRoWCross, &MiddleRowZero, &MiddleRowPoint, &MiddleRowGood);
CrossZero(LowerRow, &LowerRowVictoryCross, &LowerRowVictoryZero, &LowerRowCross, &LowerRowZero, &LowerRowPoint, &LowerRowGood);

VictoryCross = TopRowVictoryCross + MiddleRoWVictoryCross + LowerRowVictoryCross;
VictoryZero = TopRowVictoryZero + MiddleRowVictoryZero + LowerRowVictoryZero;
cross = TopRowCross + MiddleRoWCross + LowerRowCross;
zero = TopRowZero + MiddleRowZero + LowerRowZero;
point = TopRowPoint + MiddleRowPoint + LowerRowPoint;

if(TopRowGood && MiddleRowGood && LowerRowGood){
if((TopRow[0] == 'X' && MiddleRow[0] == 'X' && LowerRow[0] == 'X') || (TopRow[1] == 'X' && MiddleRow[1] == 'X' && LowerRow[1] == 'X') || (TopRow[2] == 'X' && MiddleRow[2] == 'X' && LowerRow[2] == 'X') || (TopRow[0] == 'X' && MiddleRow[1] == 'X' && LowerRow[2] == 'X') || (TopRow[2] == 'X' && MiddleRow[1] == 'X' && LowerRow[0] == 'X')){
VictoryCross++;
}
if((TopRow[0] == 'O' && MiddleRow[0] == 'O' && LowerRow[0] == 'O') || (TopRow[1] == 'O' && MiddleRow[1] == 'O' && LowerRow[1] == 'O') || (TopRow[2] == 'O' && MiddleRow[2] == 'O' && LowerRow[2] == 'O') || (TopRow[0] == 'O' && MiddleRow[1] == 'O' && LowerRow[2] == 'O') || (TopRow[2] == 'O' && MiddleRow[1] == 'O' && LowerRow[0] == 'O')){
VictoryZero++;
}
if(VictoryCross > 1 || VictoryZero > 1 || (VictoryCross >= 1 && VictoryZero >= 1) || (VictoryCross == 1 && zero >= cross) || (VictoryZero == 1 && cross >= zero) || (VictoryZero == 1 && cross < zero) || (VictoryCross == 1 && zero != (cross - 1) ) ){
answer = "Incorrect";
}else if(VictoryCross == 0 && VictoryZero == 0 && point >= 0){
answer = "Nobody";
}else if(VictoryCross == 1 && VictoryZero == 0){
answer = "Petya won";
}else if(VictoryCross == 0 && VictoryZero == 1){
answer = "Vanya won";
}
}else{
answer = "Incorrect";
}

std::cout << answer;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.02.2022, 19:58
Помогаю со студенческими работами здесь

Приделать к коду игры крестики нолики ИИ
Форумчане! помогите с кодом к игре крестики-нолики. пытаюсь сделать игру человек-компьютер. что не правильно в коде? ошибка именно в...

Логика для игры крестики нолики
Здравствуйте. Есть программа крестики нолики. Не могу выполнить задание чтобы, вместо 2 игроков был один 1игрок против ПК. Не знаю как...

Крестики-нолики - алгоритм для игры против ПК
Смотрю, уже только ленивый не сделал. Собственно это я. Вчера сел, написал свои 200 строк какашкокода для любого поля с любым количеством...

Как оптимизировать данный код игры крестики нолики?
Привет всем! Я написал консольную игру &quot;Крестики нолики&quot;. Хочу посоветоваться как можно оптимизировать игру. Вот исходный код: ...

Написать AI для игры крестики-нолики (алгоритм самообучающегося бота)
Хочу написать подобным алгоритм, но даже не знаю с чего начать. В интернете перерыл все, ничего полезного гн нашел. Подскажите основы...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru