Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 16.12.2019
Сообщений: 4
1

Реализовать правильно игру "Быки и коровы"

06.06.2020, 13:29. Показов 1245. Ответов 1

Author24 — интернет-сервис помощи студентам
Проблема заключается в том, что считает неправильно быков и коров именно в винформе, хотя в обычной консоли, вроде, все считает правильно. Существует следующая форма:
Реализовать правильно игру "Быки и коровы"

Использую функцию при загрузке формы для инициализации четырехзначного числа, которое загадал компьютер:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e)
        {
                bool bmap[10];
                for (int i = 0; i != 10; i++) bmap[i] = true;
                int n, number = 0;
                for (int i = 1; i != 10000; i *= 10)
                {
                    do
                    {
                        n = 1 + rand() % 10;
                    } while (bmap[n] == false);
                    bmap[n] = false;
                    number += i * n;
                }
                textBox4->Text = Convert::ToString(number);
        }
Оно также выводится в левый верхний уголок, так что всегда можно сверить. Дальше нашла обычную функцию для поиска быков и коров:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void get(const int &number)
        {
            int bik, korova;    
                    int input;
                    input = Convert::ToInt16(textBox1->Text);   bik = 0, korova = 0;
                    for (int i = 1000; i != 0; i /= 10) {
                        if ((input / i % 10) == (number / i % 10))
                            bik++;
                    }
                    for (int i = 1000; i != 0; i /= 10) {
                        for (int j = 1000; j != 0; j /= 10)
                        {
                            if (i != j && (input / i % 10) == (number / j % 10))
                                korova++;
                        }
 
                        textBox2->Text = Convert::ToString(bik);
                        textBox3->Text = Convert::ToString(korova);
                    }
                    if(bik==4)MessageBox::Show("You won");
 
        }
Чтобы вызвать функцию надо нажать на кнопку, реализация такая :
C++
1
2
3
4
5
System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
         int number;
 
            get(number);
        }
Но данные никак не совпадают, даже, если ввожу число, которое загадал компьютер. Помогите, пожалуйста, уж не знаю, что делать. Задавайте вопросы, если что-то в моих обьяснениях не понятно и вы готовы помочь, буду очень благодарна.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.06.2020, 13:29
Ответы с готовыми решениями:

Игра "Быки и коровы": как реализовать игру между пользователями
Приветствую, помогите кто может, писал быки и коровы и столкнулся с проблемой в задании сказано...

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

Разработать программу, реализующую игру «Быки и коровы»
Разработать программу, реализующую игру «Быки и коровы». Играют два игрока (человек и...

Сделать игру быки и коровы в приложении WPF
С рандомной изначальной комбинацией из 4 цифр (Со скриншотами кода и самого окошка)

Быки и коровы, не правильно считает их
Не правильно считает быков и коров, помогите пожалуйста #include <iostream> #include <locale.h>...

1
817 / 504 / 211
Регистрация: 19.01.2019
Сообщений: 1,196
07.06.2020, 21:33 2
Лучший ответ Сообщение было отмечено t1nzy как решение

Решение

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
int generateNumber() {
    int result{};
    int digit[]{ 0,1,2,3,4,5,6,7,8,9 };
    for (int i{}, j(10); i < 4; ++i, --j) {
        int n = rand() % j;
        result = result * 10 + digit[n];
        std::swap(digit[n], digit[j - 1]);
    }
    return result;
}
 
System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
    textBox4->Text = Convert::ToString(generateNumber());
}
 
System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
    int bull{}, cow{};
    for (int i{}; i < 4; ++i) {
        for (int j(i); j < 4; ++j) {
            if (this->textBox4->Text[i] == this->textBox1->Text[j]) {
                if (i == j) ++bull;
                else ++cow;
                break;
            }
        }
    }
 
    this->textBox2->Text = Convert::ToString(bull);
    this->textBox3->Text = Convert::ToString(cow);
 
    if (bull == 4) MessageBox::Show("You damn right!");
}
?
1
07.06.2020, 21:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.06.2020, 21:33
Помогаю со студенческими работами здесь

Быки и коровы - как реализовать алгоритм
Помогите найти ошибку в программе. uses crt; var a,b,c,d,e,a1,b1,c1,d1,e1,i,i1:integer;...

Напишите игру "Быки и коровы" используя рекурсию :)
Напишите игру &quot;Быки и коровы&quot;. Суть игры заключается в том, что программа загадывает случайное 4-ёх...

Условия похожи на игру "Быки и коровы", но с видоизменениями:
Такая ситуация: университет. Пара (учусь на економическом факультете). Существует вознаграждение...

Напишите пожалуйста игру "Быки и коровы"
загадано число, все цифры которого различны. при сравнении его с другими числами нам известно...

Придумать игру, похожую на "Быки и коровы"
Помогите придумать игру на подобии «Быки и коровы». Если кто не слышал о данной игре вот ссылка на...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru