Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/54: Рейтинг темы: голосов - 54, средняя оценка - 4.83
4 / 4 / 3
Регистрация: 17.10.2011
Сообщений: 169

Игра быки и коровы

13.01.2013, 23:03. Показов 10417. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Условия игры: компьютер генерирует целое четырехзначное число, в котором все цифры раз-личны. Играющий пытается угадать это число, делая несколько попыток. После каждой попытки компьютер сообщает о количестве <<коров>> (цифр, совпадающих по разряду с цифрой в зага-данном числе) и <<быков>> (цифр, имеющихся в загаданном числе, но не совпадающих по раз-ряду)
поиском по форуму пользовался. тем много но решения ни в одной можно сказать не найдено. помогите решить простеньким алгоритмом. если кто решал такое уже можете скинуть ваши варианты
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.01.2013, 23:03
Ответы с готовыми решениями:

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

Игра "быки и коровы"
Доброго всем времени.Помогите понять задачу. Компьютер задумывает четырехзначное число, не содержащее двух одинаковых цифр. Вы...

игра "быки и коровы"
Хочу реализовать программу игры &quot;быки и коровы&quot;, но где-то в третьем сравнении есть ошибка. Суть такова, что первый бот должен за...

7
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
13.01.2013, 23:10
Быки и коровы
Быки и коровы
Быки и коровы. Комментарии к коду.
0
4 / 4 / 3
Регистрация: 17.10.2011
Сообщений: 169
13.01.2013, 23:22  [ТС]
1)программа не совсем быки и коровы она генирирует числои в конечном итоге выводит загаданное число и число а как таковых быков и коров невыводит
2)сдесь постебались над кодом и 3) решения так и не найдено эти темы я уже изучал
0
73 / 73 / 13
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
14.01.2013, 06:36
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
#include <iostream>
#include <conio.h>
#include <time.h>
 
void GetRandomNumber(char *, const unsigned &);
bool CheckAnswer(const char *, const char *, const unsigned &, unsigned &, unsigned &);
 
int main()
{
    using namespace std;
    const unsigned n_size(4), max_attempts(40);
    char secret_number[n_size+1], user_number[n_size+1];
    unsigned attempts(0), bulls(0), cows(0), difficulty(0), score(0);
    int key(0);
    bool GameOver(false);
 
    while(!GameOver){
        memset(secret_number,'\0',n_size+1);
        GetRandomNumber(secret_number, n_size);
        system("cls");
        cout<<"  A shepherd has a riddle for you, how many cattle in the herd?"<<endl;
        cout<<"  Answer contains 4 digits 1-9 without repetition."<<endl;
        cout<<"  If you see the bulls, then the answer contains your digits."<<endl;
        cout<<"  But if you see a cows, it mean that some digits in its place."<<endl;
        cout<<"  How many attempts you need that would guess? ("<<max_attempts<<" maximum) : ";
        cin>>attempts;
        cout<<endl;
        if(attempts > max_attempts) attempts = max_attempts;
        difficulty = max_attempts/attempts;
        score = max_attempts;
 
        while(attempts){
            cout<<"  You have "<<attempts<<" attempts"<<endl;
            cout<<"  What is the number? : ";
            memset(user_number,'\0',n_size+1);
            cin>>user_number;
            if(CheckAnswer(secret_number, user_number, n_size, cows, bulls)){
                cout<<"  It's true!"<<endl;
                score *= difficulty;
                cout<<"  Congratulations! Your score : "<<score<<endl<<endl; 
                break;
            }else{
                cout<<"  Not quite right. And you see "<<bulls<<" bulls and "<<cows<<" cows."<<endl;
                score--;
                attempts--;
            }
        }
        cout<<"  In a herd of cattle "<<secret_number<<endl;
        cout<<"  \tPlay again? (y/ESC)";
        do{
            int key = _getch();
            if(key == 'Y' || key == 'y') key = 0;
            else if(key == 27){
                GameOver = true;
                key = 0;
            }
        }while(key);
    }
 
    cout<<endl;
    system("pause");
    return 0;
}
 
void GetRandomNumber(char *num, const unsigned &size)
{
    char digits[10] = "123456789";
    srand((unsigned)time(0));
    for(unsigned i=0, rmax=9; i<size; i++){
        unsigned r = rand()%rmax--;
        num[i] = digits[r];
        digits[r] = digits[rmax];
    }
}
 
bool CheckAnswer(const char *secret, const char *answer, const unsigned &size, unsigned &cow, unsigned &bull)
{
    cow = 0; bull = 0;
    unsigned i1, i2;
    for(i1=0; i1<size; i1++){
        for(i2=0; i2<size; i2++){
            if(answer[i1] == secret[i2]){
                if(i1 == i2) cow++;
                else bull++;
            }
        }
    }
    return cow == size;
}
0
4 / 4 / 3
Регистрация: 17.10.2011
Сообщений: 169
15.01.2013, 12:57  [ТС]
выше приведенные коды слишком наворочены для лабораторной. можете подсказать 2 цикла сравнения двух массивов на быков и коров ?
тоже самое было с игрой кости поискал на форуме все коды огромные и в итоге написал свой простенький.
мне нужна обычная программа с 2 массивами(массив из 4 символов). первый генерируется случайно второй вводит пользователь. и 2 функции поиск быков и поиск коров .
0
73 / 73 / 13
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
15.01.2013, 14:41
мм.... функция сравнения проще некуда, формирование случайного 4-х значного числа тоже коротенькая. выкинте текст и ничего не останется от "навороченности"

Добавлено через 7 минут
Цитата Сообщение от илья1995 Посмотреть сообщение
и 2 функции поиск быков и поиск коров .
зачем 2? за один раз всё ищется - если цифра есть в загаданном числе - 2 варианта
если индексы совпадают значит корова++ иначе - бык++
куда уж проще то?

Добавлено через 38 минут
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
#include <iostream>
#include <time.h>
 
void GetRandomNumber(char *num)
{
    char digits[10] = "123456789";
    srand((unsigned)time(0));
    for(unsigned i=0, rmax=9; i<4; i++){
        unsigned r = rand()%rmax--;
        num[i] = digits[r];
        digits[r] = digits[rmax];
    }
}
 
template <int row, int col>
bool CheckAnswer(char (&arr)[row][col], unsigned &bull, unsigned &cow)
{
    cow = 0; bull = 0;
    unsigned i1, i2;
    for(i1=0; i1<col-1; i1++){
        for(i2=0; i2<col-1; i2++){
            if(arr[0][i1] == arr[1][i2]){
                if(i1 == i2) cow++;
                else bull++;
            }
        }
    }
    return cow == col-1;
}
 
int main()
{
    using namespace std;
    char numbers[2][5];
    unsigned bulls(0), cows(0);
 
    memset(numbers[0],'\0',5);
    GetRandomNumber(numbers[0]);
 
    while(true){
        cout<<"  What is the number? : ";
        memset(numbers[1],'\0',5);
        cin>>numbers[1];
        if(CheckAnswer(numbers, bulls, cows)){
            cout<<"  Congratulations! Your win : "<<endl;
            system("pause");
            return 0;
        }else{
            cout<<bulls<<" bulls "<<cows<<" cows"<<endl;
        }
    }
    return 0;
}
Добавлено через 1 минуту
вот поурезал слегка

Добавлено через 7 минут
Цитата Сообщение от илья1995 Посмотреть сообщение
массив из 4 символов
из 5 символов лучше (4 символа и '\0'), тогда можно проще вводить с консоли и выводить на экран
1
4 / 4 / 3
Регистрация: 17.10.2011
Сообщений: 169
15.01.2013, 21:20  [ТС]
можете пояснить программу?
конкретно вот эти строки:
C++
1
2
3
4
5
char digits[10] = "123456789";
        for(unsigned i=0, rmax=9; i<4; i++){
        unsigned r = rand()%rmax--;
        num[i] = digits[r];
        digits[r] = digits[rmax];
не совсем понял как тут заполняется массив понял только что рандомом и 4 числа
C++
1
template <int row, int col>
C++
1
unsigned bulls(0), cows(0);
C++
1
memset(numbers[0],'\0',5);
C++
1
CheckAnswer(numbers, bulls, cows)
тут вроде как вызвывается функция с быками и коровами но зачем запись в скобках (numbers, bulls, cows)
просто до этого такова не встречал еще
и где тут массив который вводит пользователь?
0
73 / 73 / 13
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
16.01.2013, 03:44
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    // массив символов, которые будут выбираться случайным образом
    // напоминает лото
    char digits[10] = "123456789";
 
    // инициализация генератора случайных чисел
    srand((unsigned)time(0));
 
    // заполнение 4-х символьной строки, переданной в функцию
    for(unsigned i=0, rmax=9; i<4; i++){
                                    // 1-я итерация i=0
                                    // rmax = 9
        unsigned r = rand()%rmax;   // r случайное от 0 до 8
                                    // допустим r = 2
                                    // num 0000     digits 123456789
        num[i] = digits[r];         // num 3000
                                    // теперь символ с индексом 2 уже нельзя использовать
                                    // заменим его последним символом (с инексом rmax)
        digits[r] = digits[rmax];   // теперь digits 129456789
        rmax--;                     // уменьшаем индекс максимальной цифры
                                    // т.е. в след. раз выбирать будем из 12945678
    }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.01.2013, 03:44
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru