С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
99 / 98 / 11
Регистрация: 12.09.2016
Сообщений: 195
1

Игра в закрашивание клеток

30.09.2016, 15:31. Показов 4513. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Двое ребят на клетчатом листе бумаги N × M клеток играют в такую игру: они по очереди закрашивают клетки (изначально все клетки не закрашены). За ход разрешается закрасить 1, 2, 3 или 10 любых ещё не закрашенных клеток. Выигрывает тот, кто закрасит последнюю клетку. Кто выигрывает при правильной игре?

--
вот мой код
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
#include <iostream> 
using namespace std;
int main() {
    int n;
    int m;
    int nm;
    int pb = 0;
    cin>>n;
    cin >> m;
    nm = m*n;
    for (nm>0)
    {
        if (nm>10) {
            nm = nm - 10;
            pb = pb++;
        }
        else if (nm>3 && nm<10) {
            nm = nm - 3;
            pb = pb++;
        }
        else if (nm == 2) {
            nm = nm - 2;
            pb = pb++;
        }
        else if (nm == 1) {
            nm = nm - 1;
            pb = pb++;
        }
    }
    if (pb % 2 == 0) {
        cout<<"1"<<endl;
    }
    else {
        cout<<"2"<<endl;
    }
    return 0;
}
выдает тут ошибку
C++
1
for (nm>0)
"требуется точка с запятой"
Но там же не нужна точка с запятой...Что не так
Срочно пожалуйста
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.09.2016, 15:31
Ответы с готовыми решениями:

Игра "Жизнь": найти конфигурацию клеток, которая будет через k поколений от заданного
Игра «Жизнь» была придумана английским математиком Джоном Конвейем в 1970 году. Впервые описание...

Игра сапёр (рекурсивное открытие клеток)
procedure Openk(i1,j1:integer); begin if (mas=0)and(i1&lt;=8) and (i1&gt;=0) and (j1&lt;=8) and (j1&gt;=0)...

Как увеличить количество клеток (игра парные картинки)?
Народ Вот код подскажите какая строка будет отвечать за увлечение кол-ва клеток в игре... uses ...

Дана полоска из клеток: вывести последовательность номеров клеток, с которыми совершается действие
Дана полоска из клеток, пронумерованных от 1 до N. На каждом ходе разрешено поставить фишку на...

12
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
30.09.2016, 15:37 2
Ты синтаксис for смотрел? Там 3 секции.
C++
1
for (; nm>0; )
0
Любитель чаепитий
3744 / 1800 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
30.09.2016, 15:39 3
Вы циклы перепутали.
http://en.cppreference.com/w/cpp/language/while
attr(optional) while ( condition ) statement
http://en.cppreference.com/w/cpp/language/for
attr(optional) for ( declaration-or-expression(optional) ; declaration-or-expression(optional) ; expression(optional) ) statement
0
99 / 98 / 11
Регистрация: 12.09.2016
Сообщений: 195
30.09.2016, 15:46  [ТС] 4
Благодарю за ответы,задача решена!
1
Эксперт С++
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
01.10.2016, 09:58 5
Лучший ответ Сообщение было отмечено Gaveyn как решение

Решение

Цитата Сообщение от Gaveyn Посмотреть сообщение
задача решена!
Gaveyn, как говорил Чарльз Хоар, существует два способа создания программного обеспечения: первый — делать программы настолько простыми, что в них явно не будет никаких дефектов; второй — делать их настолько сложными, что в них трудно отыскать явные дефекты. Первый способ намного сложнее.

По первому способу где-то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//Двое ребят на клетчатом листе бумаги N × M клеток играют в такую игру:
//они по очереди закрашивают клетки (изначально все клетки не закрашены).
//За ход разрешается закрасить 1, 2, 3 или 10 любых ещё не закрашенных клеток.
//Выигрывает тот, кто закрасит последнюю клетку. Кто выигрывает при правильной игре?
///////////////////////////////////////////////////////////////////////////////
#include <iostream>
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    for(;;)
    {
        int     k{};
        std::cout   <<  "M*N = ";
        std::cin    >>  k;
 
        std::cout   <<  1   +   (k % 4   ==  0)
                    <<  std::endl
                    <<  std::endl;
    }//for
}
0
99 / 98 / 11
Регистрация: 12.09.2016
Сообщений: 195
01.10.2016, 15:30  [ТС] 6
Это задача из олимпиады по программированию для учеников 9-10-11 классов.
Она не решабельна,так как пользователь с клавиатуры может вводить только 2 числа:M(длина поля) и N(ширина поля)
А дальше все зависит от человека.Он,если захочет,закрасит 2 клетки,или 3,или 4,или 10...
Как программа должна читать мысли?
Моя программа работает в том случае,если они каждый раз будут закрашивать максимальное количество клеток
1
Эксперт С++
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
01.10.2016, 16:13 7
Лучший ответ Сообщение было отмечено Gaveyn как решение

Решение

Цитата Сообщение от Gaveyn Посмотреть сообщение
Она не решабельна,так как пользователь с клавиатуры может вводить только 2 числа:M(длина поля) и N(ширина поля)
А дальше все зависит от человека.
Внимательно читайте условие. Там сказано:
Цитата Сообщение от Gaveyn Посмотреть сообщение
при правильной игре
Правильная игра состоит в том, чтобы оставить противнику 4 * i клеток.
0
4264 / 3323 / 925
Регистрация: 25.03.2012
Сообщений: 12,520
Записей в блоге: 1
01.10.2016, 17:36 8
Mr.X, ты забыл, что можно убирать ещё и по 10 клеток, не только 1,2,3.
0
Эксперт С++
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
01.10.2016, 18:19 9
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Mr.X, ты забыл, что можно убирать ещё и по 10 клеток, не только 1,2,3.
Убирая 10, мы убираем 2 по модулю 4, противник убирает тоже 2.
0
99 / 98 / 11
Регистрация: 12.09.2016
Сообщений: 195
01.10.2016, 20:25  [ТС] 10
Как это реализовать?
1
Любитель чаепитий
3744 / 1800 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
01.10.2016, 20:27 11
Цитата Сообщение от Gaveyn Посмотреть сообщение
Как это реализовать?
Что реализовать?
0
99 / 98 / 11
Регистрация: 12.09.2016
Сообщений: 195
01.10.2016, 22:11  [ТС] 12
Цитата Сообщение от Mr.X Посмотреть сообщение
Правильная игра состоит в том, чтобы оставить противнику 4 * i клеток.
как это реализовать в c++?
1
Любитель чаепитий
3744 / 1800 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
01.10.2016, 22:20 13
Gaveyn, Игра в закрашивание клеток
Вот же Вам уже написали реализацию.
0
01.10.2016, 22:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.10.2016, 22:20
Помогаю со студенческими работами здесь

Найдите максимальную красоту среди красот всех клеток и количество клеток, имеющих такую красоту
Помогите с Олимпиадой задачкой. Проходит не все тесты: Видимость звездочек (упрощенная версия) ...

Заполните матрицу 8*8 целых чисел так, чтобы нули располагались в позициях белых клеток, а единицы-в позициях черных клеток шахматной доски
помогите пожалуйста сделать Задание 4 Заполните матрицу 8*8 целых чисел так, чтобы нули...

Закрашивание
&lt;?php function rndrgb($img,$color,$min,$max){ srand(); $rnd = mt_rand(150,255); switch...

Закрашивание
Я создал объект прямоугольник, и внутри него я нарисовал 10 прямоугольников линиями. Можно ли...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru