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

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

12.04.2020, 17:07. Показов 18994. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru