Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
 Аватар для BaLahmuT
88 / 32 / 16
Регистрация: 01.06.2019
Сообщений: 672

Игра "100 спичек", почему не работает где ошибка?

19.06.2019, 18:39. Показов 3111. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Игра "100 спичек". Из кучки, первоначально содержащей 100 спичек, двое играющих поочередно берут по несколько спичек: не менее одной и не более десяти. Выигрывает взявший последнюю спичку. Программа должна хранить имена игроков в виде первых латинских букв их имен и выводить соответствующие сообщения с учетом имен.
Миниатюры
Игра "100 спичек", почему не работает где ошибка?  
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.06.2019, 18:39
Ответы с готовыми решениями:

игра 100 спичек
Игра «100 спичек». Из кучки, первоначально содержащей 100 спичек, двое играющих поочередно берут по нескольку спичек: не менее одной и не...

Игра 100 спичек
Есть код программы на c++ я пытаюсь его переписать на язык си (C) компилирую через mingw. Это игра 100 спичек Вот сам код c++ ...

Игра 100 спичек
Здравствуйте, у меня есть PictureBox'ы 100 спичек, мне при нажатии на кнопку 1,2,3,4,5,6,7 нужно чтоб они становились невидимыми, перерыл...

5
 Аватар для Krokodil9798
330 / 145 / 56
Регистрация: 17.10.2015
Сообщений: 580
19.06.2019, 22:19
Цитата Сообщение от Rudman132 Посмотреть сообщение
Игра "100 спичек".
С чем возникли трудности?
0
 Аватар для BaLahmuT
88 / 32 / 16
Регистрация: 01.06.2019
Сообщений: 672
20.06.2019, 14:53  [ТС]
Что здесь не

Добавлено через 1 минуту
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
#include <iostream>
#include <Windows.h>
#include <ctime>
#include <cstdlib>
const int InitialCount = 100;
int Count, Num, Player, Player2;
bool Correct;
using namespace std;
int main() {
 
    setlocale(LC_ALL, "Rus");
    srand(time(0));
    system("cls");
    Player = 1;
    Count = InitialCount;
    do {
 
        if (Player == 1) {
            do {
                std::cout << "Ваш ход 1. На столе " << Count << " спичек.\n";
                std::cout << "Сколько спичек Вы берете?\n";
                std::cin >> Num;
                if (Num >= 1 && Num <= 10 && Num <= Count)
                    Correct = true;
                else
                {
                    std::cout << "Неверно! Повторите ввод!\n";
                    Correct = false;
                }
            } while (!Correct);
        }
    }
    do {
        if (Player == 2) {
            do {
                cout << "Ваш ход 2. На столе " << Count << " спичек.\n";
                std::cout << "Сколько спичек Вы берете?\n";
                std::cin >> Num;
                if (Num >= 1 && Num <= 10 && Num <= Count)
                    Correct = true;
                else
                {
                    std::cout << "Неверно! Повторите ввод!\n";
                    Correct = false;
                }
            } while (!Correct);
        }
    }
 
        Count -= Num;
        if (Player == 1)
            Player = 2;
        else
            Player = 1;
        while (Count > 0);
        if (Player = 1)
            std::cout << "Вы победили!";
        else std::cout << "Вы проиграли!";
        return 0;
}
0
 Аватар для BaLahmuT
88 / 32 / 16
Регистрация: 01.06.2019
Сообщений: 672
20.06.2019, 15:06  [ТС]
Игра "100 спичек". Из кучки, первоначально содержащей 100 спичек, двое играющих поочередно берут по несколько спичек: не менее одной и не более десяти. Выигрывает взявший последнюю спичку. Программа должна хранить имена игроков в виде первых латинских букв их имен и выводить соответствующие сообщения с учетом имен.

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
#include <iostream>
#include <Windows.h>
#include <ctime>
#include <cstdlib>
const int InitialCount = 100;
int Count, Num, Player, Player2;
bool Correct;
using namespace std;
int main() {
    setlocale(LC_ALL, "Rus");
    srand(time(0));
    system("cls");
    Player = 1;
    Count = InitialCount;
    do {
 
        if (Player == 1) {
            do {
                std::cout << "Ваш ход 1. На столе " << Count << " спичек.\n";
                std::cout << "Сколько спичек Вы берете?\n";
                std::cin >> Num;
                if (Num >= 1 && Num <= 10 && Num <= Count)
                    Correct = true;
                else
                {
                    std::cout << "Неверно! Повторите ввод!\n";
                    Correct = false;
                }
            } while (!Correct);
        }
    }
    
    do {
        if (Player == 2) {
            do {
                cout << "Ваш ход 2. На столе " << Count << " спичек.\n";
                std::cout << "Сколько спичек Вы берете?\n";
                std::cin >> Num;
                if (Num >= 1 && Num <= 10 && Num <= Count)
                    Correct = true;
                else
                {
                    std::cout << "Неверно! Повторите ввод!\n";
                    Correct = false;
                }
            } while (!Correct);
        }
    }
 
    Count -= Num;
    if (Player == 1)
        Player = 2;
    else
        Player = 1;
    while (Count > 0);
    if (Player = 1)
        std::cout << "Вы победили!";
    else std::cout << "Вы проиграли!";
    return 0;
}
0
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
20.06.2019, 15:19
Лучший ответ Сообщение было отмечено Rudman132 как решение

Решение

А как она может работать, если даже не компилируется!
Предупреждение C4244 аргумент: преобразование "time_t" в "unsigned int", возможна потеря данных test d:\current\test\test.cpp 11
Ошибка C2059 синтаксическая ошибка: do test d:\current\test\test.cpp 33
Ошибка C2143 синтаксическая ошибка: отсутствие ";" перед "{" test d:\current\test\test.cpp 33
Ошибка (активно) E0112 требуется "while" test d:\current\test\test.cpp 33
Вот так компилируется
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
#include <iostream>
#include <Windows.h>
#include <ctime>
#include <cstdlib>
const int InitialCount = 100;
int Count, Num, Player, Player2;
bool Correct;
using namespace std;
int main() {
    setlocale(LC_ALL, "Rus");
    srand((unsigned)time(0));
    system("cls");
    Player = 1;
    Count = InitialCount;
    do {
 
        if (Player == 1)
        {
            do {
                std::cout << "Ваш ход 1. На столе " << Count << " спичек.\n";
                std::cout << "Сколько спичек Вы берете?\n";
                std::cin >> Num;
                if (Num >= 1 && Num <= 10 && Num <= Count)
                    Correct = true;
                else
                {
                    std::cout << "Неверно! Повторите ввод!\n";
                    Correct = false;
                }
            } while (!Correct);
        }
        //  }
 
    //  do {
        else if (Player == 2)
        {
            do {
                cout << "Ваш ход 2. На столе " << Count << " спичек.\n";
                std::cout << "Сколько спичек Вы берете?\n";
                std::cin >> Num;
                if (Num >= 1 && Num <= 10 && Num <= Count)
                    Correct = true;
                else
                {
                    std::cout << "Неверно! Повторите ввод!\n";
                    Correct = false;
                }
            } while (!Correct);
        }
 
        Count -= Num;
        if (Player == 1)
            Player = 2;
        else
            Player = 1;
    } while (Count > 0);
    if (Player == 1)
        std::cout << "Вы победили!";
    else std::cout << "Вы проиграли!";
    return 0;
}
А дальше - отладчик Вам в помощь!
Как пользоваться отладчиком (в Visual Studio)
1
 Аватар для egor2116
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
21.06.2019, 12:41
Наверное можно как то так
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
#include <iostream>
#include <string>
#include <vector>
 
class Player
{
public:
    Player(const std::string & userName) : m_Name(userName){}
    const std::string & GetName() const { return m_Name; }
private:
    std::string m_Name;
};  
 
class Game
{
public:
    Game(int matches) : m_Match(matches) {}
    const Player & Run()
    {
        while (m_Match > 0)
        {
            for (const auto & p : m_Players)
            {
                std::cout << "Matches left: " << m_Match << std::endl;
                int matches = 0;
                do
                {
                     matches = Turn(p);
                     if (matches > 0 && matches < 11 && (m_Match - matches) >= 0)
                     {
                        break;
                     }
                     std::cout << "Needs set number from 1 to 10 matches. Try again" << std::endl;
                } while (true);
 
                if (IsEndGame(matches))
                {
                    return p;
                }
                m_Match -= matches;
            }
        }
    }
 
    void AddPlayer(Player p)
    {
        for (const auto & player : m_Players)
        {
            if (player.GetName().compare(p.GetName()) == 0)
            {
                std::cout << "Player " << p.GetName() << "already exist" << std::endl;
                return;
            }
        }
        m_Players.emplace_back(std::move(p));
    }
    Player && DeletePlayer(const std::string & playerName)
    {
        for (auto it = m_Players.begin(); it != m_Players.end(); it++)
        {
            if (it->GetName().compare(playerName) == 0)
            {
 
                auto itTmp = m_Players.erase(it);
                return std::move(*itTmp);
            }
        }
        std::cout << "Was not founded player " << playerName << std::endl;
    }
    const Player & GetPlayer(const std::string & playerName) const
    {
        for (const auto & player : m_Players)
        {
            if (player.GetName().compare(playerName) == 0)
            {
                return player;
            }
        }
        std::cout << "Was not founded player " << playerName << std::endl;
    }
private:
    int Turn(const Player & p)
    {
        std::cout << "Turn " << p.GetName() << " set matches "<< std::endl;
        int matches = 0;
        std::cin >> matches;
        return matches;
    }
    bool IsEndGame(int Matches)
    {
        return ((m_Match - Matches) == 0);
    }
private:
    std::vector<Player> m_Players;
    int m_Match;
};
 
int main()
{
    Player p1("Player 1");
    Player p2("Player 2");
    Game game(20);
 
    try
    {
        game.AddPlayer(std::move(p1));
        game.AddPlayer(std::move(p2));
 
        const auto & winner = game.Run();
        std::cout << "Winner is " << winner.GetName() << std::endl;
    }
    catch (const std::runtime_error & e)
    {
        std::cout << "Exception has occurred: " << e.what() << std::endl;
        std::cin.get();
        return 1;
    }
 
    std::cin.get();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.06.2019, 12:41
Помогаю со студенческими работами здесь

Игра 100 спичек
Нужно сделать игру 100 спичек и чтобы игрок выбирался рандомно. Пытался сделать через rand, но не получается. Подскажите, пожалуйста, как...

Игра 100 спичек
Игра &quot;100 спичек&quot;. Из кучки, первоначально содержащей 100 спичек, двое играющих поочередно берут по несколько спичек: не менее одной и не...

Игра "100 спичек". Подскажите, что значит PrintRest?
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;conio.h&gt; #include &lt;graphics.h&gt; #include &lt;dos.h&gt; #include &lt;string.h&gt; int...

Игра "100 спичек"
Игра &quot;100 спичек&quot;. Из кучки, первоначально содержащей 100 спичек, двое играющих поочередно берут по несколько спичек: не менее одной и не...

Игра "100 спичек"
Игра &quot;100 спичек&quot;. Из кучки, первоначально содержащей 100 спичек, двое играющих поочередно берут по несколько спичек: не менее одной и...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru