Форум программистов, компьютерный форум CyberForum.ru

Алгоритм игры Быки -коровы в С++ - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Делаем игру. Можете помочь? http://www.cyberforum.ru/cpp/thread13641.html
Знаю, что ваще не по теме, но нормальных программистов, кроме как на специальных форумах, как этот, мы найти нигде не можем. Короче, нужны программисты на C++. Наверняка среди вас есть люди, кто не проч заделать игру, но по какой-то причине до сих пор не занялся этим(ну мало ли у кого какая история). Мы предлагаем таким людям объединиться, чтобы идеи и желание не пропадали зря. Терять вам...
C++ Исходники асечного (ICQ) протокола Народ, давно ищу одну вещь, решил создать ветку. У кого-нибудь есть исходники асечного (ICQ) протокола? Полностью рабочего. Нашел какую-то х... там отправка данных не работает... Поделитесь, кто богат, плз. http://www.cyberforum.ru/cpp/thread13607.html
C++ Пререзапуск сетевого адаптера
Вобщем пишу прогу для автоматической смены IP сетевого интерфейса. как сменить IP разобрался, делается очень просто в реестре, но после смены значения ключа конечно же нужен перезапуск подключения и как это реализовать программно не знаю.. искал инфу в инете, но толком ничего не нашел.. Буду благодарен за помощь.
В символьной строке оставить только слова, начинающиеся и заканчивающиеся на одну и ту же букву C (СИ)
Здравствуйте, Помогите, пожалуйста исправить ошибку в программе, написанную на языке С В некоторых случаях не работает Например в строке dshfhjd hjghjg Выводит hjd В символьной строке оставить только слова, начинающиеся и заканчивающиеся на одну и ту же букву.(Не использовать встроенных функций обработки строк)
C++ Аналог функции, которая используется в Delphi strtoint/inttostr http://www.cyberforum.ru/cpp/thread13083.html
есть ли в С++ аналог функции , которая используеться в Delphi strtoint/inttostr.И как она используеться???
C++ Решение систем дифференциальных уравнений методами Эйлера Здравствуйте, дорогие программисты и просто любители языка С++! В принципе, моя будущая специальность никак не пересекается с информатикой и тем более с языком С++, но увы наше образование устроенно так, что учат и тому, что тебе не надо........вобщем нет времени для рилических отступлений, перейду, пожалуй, сразу к своей просьбе. Дело в том, что лекции нам по системам дифф. уравненией не... подробнее

Показать сообщение отдельно
Somebody
2775 / 1588 / 142
Регистрация: 03.12.2007
Сообщений: 4,162
Завершенные тесты: 1
25.05.2010, 19:05     Алгоритм игры Быки -коровы в С++
Не знаю, как в том посте, но могу предложить вариант:
Создаётся массив boolов. Отмечаются "плохие" числа - которые не могут быть загаданы. Спрашивается любое "хорошее" число. Все числа, на которые ответ юзера был бы не таким, помечаются как плохие. И так далее... Если число отгадано - то хорошо, если все оставшиеся числа - плохие, то юзер натупил с ответами.
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
#include <iostream>
#include <cstring>
#include <limits>
 
using namespace std;
 
void Split(int x, int& a, int& b, int& c, int& d)
{
    d = x % 10; x /= 10;
    c = x % 10; x /= 10;
    b = x % 10; x /= 10;
    a = x % 10;
}
 
bool IsValid(int x)
{
    int a, b, c, d;
    Split(x, a, b, c, d);
    return
        (a >= 1) && (a <= 9) &&
        (a != b) && (a != c) && (a != d) && (b != c) && (b != d) && (c != d);
}
 
bool Matches(int n1, int n2, int bulls, int cows)
{
    int a1, b1, c1, d1, a2, b2, c2, d2;
    Split(n1, a1, b1, c1, d1);
    Split(n2, a2, b2, c2, d2);
    return
        bulls == (
            (a1 == a2) + (b1 == b2) + (c1 == c2) + (d1 == d2)
        ) &&
        cows == (
            (a1 == b2) + (a1 == c2) + (a1 == d2) +
            (b1 == a2) + (b1 == c2) + (b1 == d2) +
            (c1 == a2) + (c1 == b2) + (c1 == d2) +
            (d1 == a2) + (d1 == b2) + (d1 == c2)
        );
}
 
const int setSize = 10000;
bool badNum[setSize];
 
int main()
{
    memset(badNum, 0, sizeof(badNum));
    for (int i = 0; i < setSize; i++)
        badNum[i] = !IsValid(i);
    while (true)
    {
        int bulls, cows;
        int question;
        for (question = 0; question < setSize && badNum[question]; question++);
        if (question >= setSize)
        {
            cout << "bye 8-|";
            break;
        }
        cout << question << " ???" << endl;
        cout << "bulls, cows: ";
        cin >> bulls >> cows;
        if (bulls == 4 && cows == 0)
        {
            cout << "that's it :-)";
            break;
        }
        for (int i = 0; i < setSize; i++)
            badNum[i] = badNum[i] || !Matches(i, question, bulls, cows);
    }
    cin.ignore(numeric_limits<streamsize>::max(), '\n');
    cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
 
Текущее время: 00:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru