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

Игра "Пьяница" - не могу исправить ошибку в решении

11.06.2019, 18:29. Показов 759. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Код компилируется, но не правильный ответ, что именно не так не знаю.
Условие:
В игре в пьяницу карточная колода раздается поровну двум игрокам. Далее они вскрывают по одной верхней карте, и тот, чья карта старше, забирает себе обе вскрытые карты, которые кладутся под низ его колоды. Тот, кто остается без карт – проигрывает.

Для простоты будем считать, что все карты различны по номиналу, а также, что самая младшая карта побеждает самую старшую карту ("шестерка берет туза").

Игрок, который забирает себе карты, сначала кладет под низ своей колоды карту первого игрока, затем карту второго игрока (то есть карта второго игрока оказывается внизу колоды).

Напишите программу, которая моделирует игру в пьяницу и определяет, кто выигрывает. В игре участвует 10 карт, имеющих значения от 0 до 9, большая карта побеждает меньшую, карта со значением 0 побеждает карту 9.

Входные данные
Программа получает на вход две строки: первая строка содержит 5 чисел, разделенных пробелами — номера карт первого игрока, вторая – аналогично 5 карт второго игрока. Карты перечислены сверху вниз, то есть каждая строка начинается с той карты, которая будет открыта первой.

Выходные данные
Программа должна определить, кто выигрывает при данной раздаче, и вывести слово first или second, после чего вывести количество ходов, сделанных до выигрыша. Если на протяжении 106 ходов игра не заканчивается, программа должна вывести слово botva.

Код
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
#include <iostream>
#include <string>
#include <list>
 
using namespace std;
 
 
int main() {
 
 
    const int kartvIgre = 10;
    const  int kolicestvoKartPlayer1 = kartvIgre / 2;
    const int kolicestvoKartPlayer2 = kartvIgre / 2;
 
 
 
    std::list<int> koloda_pervogo_igroka;
    std::list<int> koloda_vtorogo_igroka;
    int tekusea_karta;
 
 
    for (int i = 0; i < 5; i++) {
        cin >> tekusea_karta;
        koloda_pervogo_igroka.push_back(tekusea_karta);
    }
 
    for (int i = 0; i < 5; i++) {
        cin >> tekusea_karta;
        koloda_vtorogo_igroka.push_back(tekusea_karta);
    }
 
 
    int winner = 0;
    int hodi = 0;
 
    int tekusea_karta_pervogo_igroka = 0;
    int tekusea_karta_vtoroga_igroka = 0;
 
 
 
 
    while (++hodi < 1000000 && !koloda_pervogo_igroka.empty() && !koloda_vtorogo_igroka.empty()) {
        tekusea_karta_pervogo_igroka = koloda_pervogo_igroka.front();
        tekusea_karta_vtoroga_igroka = koloda_vtorogo_igroka.front();
 
        koloda_pervogo_igroka.pop_front(); // pop_front() снял верхнюю карту  с колоды
        koloda_vtorogo_igroka.pop_front();
        if (tekusea_karta_pervogo_igroka == 0 && tekusea_karta_vtoroga_igroka == 9) {
 
 
            koloda_pervogo_igroka.push_back(tekusea_karta_pervogo_igroka); // вставил в конец списка (колоды) карту
            koloda_pervogo_igroka.push_back(tekusea_karta_vtoroga_igroka);
 
        }
        else if (tekusea_karta_pervogo_igroka > tekusea_karta_vtoroga_igroka) {
 
            koloda_pervogo_igroka.push_back(tekusea_karta_pervogo_igroka); // вставил в конец списка (колоды) карту
            koloda_pervogo_igroka.push_back(tekusea_karta_vtoroga_igroka);
 
        }
        if (tekusea_karta_vtoroga_igroka == 0 && tekusea_karta_pervogo_igroka == 9) {
 
            koloda_vtorogo_igroka.push_back(tekusea_karta_pervogo_igroka); // вставил в конец списка (колоды) карту
            koloda_vtorogo_igroka.push_back(tekusea_karta_vtoroga_igroka);
        }
 
        else {
 
            koloda_vtorogo_igroka.push_back(tekusea_karta_pervogo_igroka); // вставил в конец списка (колоды) карту
            koloda_vtorogo_igroka.push_back(tekusea_karta_vtoroga_igroka);
        }
 
        if (koloda_pervogo_igroka.empty()) { // empty если колода пустая
            winner = 2;
        }
        if (koloda_vtorogo_igroka.empty()) {
            winner = 1;
        }
        if (koloda_pervogo_igroka.empty() && koloda_vtorogo_igroka.empty()) {
            winner = 0;
        }
    }
 
 
    
 
        switch (winner) {
        case 0:
            cout << "botva";
        case 1:
            cout << "first";
            break;
        case 2:
            cout << "second" ;
            break;
        }
    cout <<" " << hodi ;
 
 
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.06.2019, 18:29
Ответы с готовыми решениями:

Не могу понять как исправить ошибку при решении задания
Нужно в заданном массиве посчитать периметр вокруг 'Х' Вот задание на языке оригинала: Given an array arr of strings, complete...

Игра в города, не могу исправить ошибку
Program SearLAn; CONST Nmax = 10; Type TArraySting10=array of string; VAR a,b,c : TArraySting10; YesRezult : boolean; ...

Игра "Пьяница". Исправить код
Подскажите, что я не так сделал? Всегда выводит &quot;Игра закончена за 6 ходов&quot; и &quot;Результат игры: ничья&quot; using System; using...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.06.2019, 18:29
Помогаю со студенческими работами здесь

Исправить ошибку в решении
Добрый вечер :) Передо мной стоит такая задача : Из двух стеков, хранящих слова, создать новый стек со словами длины K (задается...

Как исправить ошибку в решении дифференциального уравнения?
Не могу понять как исправить ошибку. Вроде все написанно правильно!

Игра Пьяница
#include &lt;iostream&gt; #include &lt;list&gt; #include &lt;queue&gt; using namespace std; int main () {

Карточная игра пьяница
Доброго времени суток) всем Подскажите пожалуйста как лучше сделать игру карточную пьяницу. Может у кого нибудь есть старая работа этой...

Исправить ошибку в решении системы нелинейных уравнений. Метод Ньютона.
PROGRAM KURSOVOY_PROEKT; uses crt; VAR P:ARRAY OF REAL; X1,X2,X3,E: REAL; K,N,m,i:INTEGER; PROCEDURE F(X1,X2,X3,F1,F2,F3:REAL);...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Разбиваем монолит на два микросервиса и реализуем CI/CD
ArchitectMsa 20.03.2025
Когда команда растет, а функциональность монолита расширяется, поддерживать и развивать такую систему становится все труднее. Разработчики начинают тратить много времени на разбор сложных. . .
Python и PDF: Создание и редактирование файлов
py-thonny 20.03.2025
Работа с PDF-документами – одна из популярных задач в современной разработке. Python предлагает несколько инструментов для создания, чтения и редактирования PDF-файлов, среди которых особенно. . .
Корутины в Unity и производительно­сть WaitForSeconds
GameUnited 20.03.2025
Разработчики игр на Unity часто сталкиваются с вопросом: как выполнять действия через определённые промежутки времени, не блокируя основной поток игры? Тут как раз и приходят на помощь корутины —. . .
Криптография в PHP
Jason-Webb 20.03.2025
PHP предоставляет много криптографических возможностей: от встроенных функций хеширования до полноценных библиотек шифрования — арсенал средств довольно обширен. Но всё это бесполезно без понимания. . .
Lineedge (Semi-Alpha) 0.75@20: Что мы потеряли
Etyuhibosecyu 20.03.2025
С каждым новым стандартом Lineedge обретает новые возможности — это ясно, как божий день. Однако есть и другая сторона — избавление от устаревших и проблемных элементов. Обычно удаление. . .
Реализация перечислений в Go
golander 19.03.2025
Если вы перешли на Go с других языков программирования (как я), таких как C#, Java или Python, вы наверняка заметили, что Go не имеет встроенной поддержки перечислений (enumerations). Это может стать. . .
Шаблон API Gateway в микросервисной архитектуре
MatrixArchitect 19.03.2025
API Gateway — один из основных компонентов микросервисной архитектуры. Фактически, API Gateway представляет собой сервис, который располагается между клиентскими приложениями и бэкенд-микросервисами,. . .
C++26: Что мы потеряли
bytestream 19.03.2025
С каждым новым стандартом C++ обретает новые возможности — это ясно, как божий день. Однако есть и другая сторона — избавление от устаревших и проблемных элементов. Обычно удаление функциональности. . .
Async/await в C#: Асинхронное программировани­е в действии
UnmanagedCoder 19.03.2025
Разработка современных приложений немыслима без понимания асинхронного программирования. Если вы когда-либо создавали приложение, которое взаимодействует с внешними ресурсами — будь то работа с. . .
Сопоставление с образцом (Pattern Matching) в Python: Списки и словари
py-thonny 19.03.2025
Программисты любят, когда код говорит сам за себя. Представьте, что вы можете просмотреть структуру данных и мгновенно понять, что с ней делать — без сложных условий и вложенных проверок. Именно эту. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер