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

"Быки и коровы"

12.04.2020, 17:07. Показов 19111. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать игру «Быки и коровы». Программа "загадывает" четырёхзначное число и играющий должен угадать его. После ввода пользователем числа программа сообщает, сколько цифр числа угадано (быки) и сколько цифр угадано и стоит на нужном месте (коровы). После отгадывания числа на экран необходимо вывести количество сделанных пользователем попыток. В программе необходимо использовать рекурсию.
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
#include <iostream>
#include <time.h>
using namespace std;
int* m = new int[4];
int* q = new int[4];
static int sproba = 0;
int* randNumber()
{
    for (int i = 0; i < 4; i++)
        *(m + i) = rand() % 10; 
    return m;
}
int* digits(int n)
{
    for (int i = 3; i >= 0; i--)
    {
        *(q + i) = n % 10;
        n /= 10;
    }
    return q;
}
void Count(int* x, int* y, int n, int* bull, int* cow)
{
    *bull = *cow = 0;
    for (int i = 0; i < n; i++)
        if (*(x + i) == *(y + i))
            (*bull)++;
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            if ((*(x + i) == *(y + j)) && (i != j))
                (*cow)++;
}
void game(int* r, int* N)
{
    *N = sproba;
    cout << "Input your number: ";
    int number;
    cin >> number;
    int* b = digits(number);
    int bull, cow;
    Count(r, b, 4, &bull, &cow);
    cout << "Bulls = " << bull << ", cows = " << cow << endl;
    sproba++;
    if (bull == 4) cout << "OK!\n";
    else game(r, N);
}
void main()
{
    int m = 0;
    srand(time(NULL));
    int* a = randNumber();
    game(a, &m);
    cout << "Winning in " << m << " moves!\n";
}
По идее должно показывать что все стоит на своих местах(когда угадал число, тоесть Bulls=4, Cows=4). А показывает Bulls=4, Cows=2. Помогите, пожалуйста, поправить код.
Миниатюры
"Быки и коровы"  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.04.2020, 17:07
Ответы с готовыми решениями:

Быки и коровы
1. В чём разница между структурой и классом, зачем использовать структуру? 2. Зачем нужны структуры pair и four? 3. Что такое inline и...

Быки и коровы
Решил написать игру Быки и коровы, но уже в самом начале появились проблемы. я сделал функцию, которая считает количество быков, т.е....

Быки и коровы
Здравствуйте, помогите пжлст дописать игру &quot;быки и коровы&quot;. Начало кода с генерацией рандомных чисел #include &lt;vcl.h&gt;...

21
 Аватар для beahero
0 / 0 / 0
Регистрация: 25.05.2020
Сообщений: 19
28.06.2020, 17:37
Студворк — интернет-сервис помощи студентам
в моем задании о повторении цифр информации нет .. , а вот счетчик ... =)
0
Гвоздь Задиров
 Аватар для Folian
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
28.06.2020, 19:09
Цитата Сообщение от FFPowerMan Посмотреть сообщение
Вплоть до того, что переменные b и c я поменял местами.
В сообщениях выше про это уже всё было обговорено

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

Добавлено через 4 минуты
Цитата Сообщение от beahero Посмотреть сообщение
а вот счетчик
проще всего статическую переменную задать и плюсовать по вызову, а выводить через return; или через параметры закинь счётчик по ссылке, вместе с массивом. И массив тоже по константной ссылке передавай лучше.

Добавлено через 1 час 26 минут
beahero, например,
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <time.h>
using namespace std;
int bools_and_cows(const int* const &m) {
 
    static int count = 0;
    ++count;
 
    cout << "Введите четырехзначное число " << endl;
    int number_user;
    cin >> number_user;
    int number_user_arr[4];
    number_user_arr[3] = number_user % 10;
    number_user /= 10;
    number_user_arr[2] = number_user % 10;
    number_user /= 10;
    number_user_arr[1] = number_user % 10;
    number_user /= 10;
    number_user_arr[0] = number_user % 10;
 
    int bools = 0;
    int cows = 0;
    for (int i = 0; i < 4; i++) {
        if (m[i] == number_user_arr[i]) {
            cows++;
        }
    }
    for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 4; j++) {
            if (m[i] == number_user_arr[j]) {
                bools++;
                number_user_arr[j] = -1;
                break;
            }
        }
    }
    if (cows == 4) {
        cout << "\n YOU WIN ! ! ! ! ! ! ! " << endl;
        return count;
    }
    else {
        cout << "Быков : " << bools << endl;
        cout << "Коров : " << cows << endl;
        bools_and_cows(m);
    }
}
int main()
{
    srand(time(0));
    setlocale(LC_ALL, "Russian");
    int const size = 4;
    int number_rand[size];
    for (int i = 0; i < size; i++) {
        number_rand[i] = rand() % 10;
      /*  std::cout << number_rand[i]; // читer */
    }
    int count = 0;
    std::cout << "\nCount: " << bools_and_cows(number_rand);
 
    //system("pause");
}
 
 
#include <iostream>
#include <time.h>
using namespace std;
void bools_and_cows(const int* const &m, int &count) {
 
    ++count;
 
    cout << "Введите четырехзначное число " << endl;
    int number_user;
    cin >> number_user;
    int number_user_arr[4];
    number_user_arr[3] = number_user % 10;
    number_user /= 10;
    number_user_arr[2] = number_user % 10;
    number_user /= 10;
    number_user_arr[1] = number_user % 10;
    number_user /= 10;
    number_user_arr[0] = number_user % 10;
 
    int bools = 0;
    int cows = 0;
    for (int i = 0; i < 4; i++) {
        if (m[i] == number_user_arr[i]) {
            cows++;
        }
    }
    for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 4; j++) {
            if (m[i] == number_user_arr[j]) {
                bools++;
                number_user_arr[j] = -1;
                break;
            }
        }
    }
    if (cows == 4) {
        cout << "\n YOU WIN ! ! ! ! ! ! ! " << endl;
    }
    else {
        cout << "Быков : " << bools << endl;
        cout << "Коров : " << cows << endl;
        bools_and_cows(m, count);
    }
}
int main()
{
    srand(time(0));
    setlocale(LC_ALL, "Russian");
    int const size = 4;
    int number_rand[size];
    for (int i = 0; i < size; i++) {
        number_rand[i] = rand() % 10;
        /*std::cout << number_rand[i]; // читer */
    }
    int count = 0;
    bools_and_cows(number_rand, count);
 
    std::cout << count;
 
    //system("pause");
}
константы, в принципе, можно опустить, покуда ничего не меняешь внутри.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.06.2020, 19:09

Быки и коровы
написал игру быки и коровы. Ниже мой вариант. // ConsoleApplication1.cpp : Defines the entry point for the console application. // ...

Быки и коровы
Есть такая задача быки о коровы. Условие: http://acmp.ru/?main=task&amp;id_task=13. Код моего решения: #include &lt;fstream&gt; #include...

Игра быки и коровы
Условия игры: компьютер генерирует целое четырехзначное число, в котором все цифры раз-личны. Играющий пытается угадать это число, делая...

Игра: Быки и Коровы
Всем привет! Нужно написать игру &quot;Быки и коровы&quot;, но без массива :) Я справился с поставленной задачей, но есть баг... Если компьютер...

Написать игру «Быки и коровы»
3. Написать игру «Быки и коровы». Программа &quot;загадывает&quot; четырёхзначное число и играющий должен угадать его. После ввода пользователем...


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

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru