Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
names1995
11 / 11 / 6
Регистрация: 13.11.2012
Сообщений: 278
#1

Игра "Угадайка – 4" - C++

10.10.2013, 17:37. Просмотров 1612. Ответов 20
Метки нет (Все метки)

Игра "Угадайка – 4". Некто задумал целое число в интервале от 0 до 3.
Нужно угадать это число, задавая вопросы.
На эти вопросы Некто может отвечать лишь "Да" или "Нет".
Какое количество информации мы должны получить, чтобы узнать задуманное число, т.е. полностью снять начальную неопределенность?
Как построить процесс угадывания, минимизируя количество задаваемых вопросов?
Исходами в данном случае являются: A1 – "задуман 0", A2 – "задумана 1", A3 – "задумана 2", A4 – "задумана 3".
Задание.
Для игры "Угадайка - N"
N – определяется вариантом заданным таблицей:

0-11

1. Какое количество информации мы должны получить, чтобы узнать задуманное число?
2. Постройте алгоритм процесса угадывания для заданного варианта.
3. Разработайте техническое задание на создание программы, угадывающей задуманное пользователем число.
4. Разработайте алгоритм программы, угадывающей задуманное пользователем число.
5. Напишите программу, реализующую разработанный алгоритм.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2013, 17:37
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Игра "Угадайка – 4" (C++):

Игра "угадайка" с использованием do while. Ошибка.
Собственно задача: Написать программу, играющую с пользователем в "угадайку"...

Игра "Угадайка"
Привет! Код игры "Угадайка" из книги по изучению C++ через программирование...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно"
В зависимости от времени года "весна", "лето", "осень", "зима" определить...

Консольная "графика", игра "Тетрис". Фигуры перестают прорисовываться на определенном этапе
Доброго времени! Написал на днях тетрис (в консоле) с использованием, кажется...

Для каждой строки найти слова, которые не имеют ни одного из букв: "l", "k", "r", "s" i "j"
Задано символьные строки. Строка состоит из нескольких слов (наборов символов),...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование)
Разработать программу с использованием наследования классов, реализующую...

20
Мимино
183 / 154 / 34
Регистрация: 22.05.2013
Сообщений: 450
Записей в блоге: 1
10.10.2013, 18:17 #2
В чем сложность? Алгоритм поиска? У меня получилось 2 вопроса.
0
names1995
11 / 11 / 6
Регистрация: 13.11.2012
Сообщений: 278
10.10.2013, 18:18  [ТС] #3
не понятен алгоритм, как задумать число? кто задумал число? компьютер или человек?
0
Мимино
183 / 154 / 34
Регистрация: 22.05.2013
Сообщений: 450
Записей в блоге: 1
10.10.2013, 18:19 #4
создание программы, угадывающей задуманное пользователем число.
Программа отгадывает, а Вы загадываете. Если код нужен, напишу сразу после того, как сбегаю в киоск . 15-20 минут.
1
names1995
11 / 11 / 6
Регистрация: 13.11.2012
Сообщений: 278
10.10.2013, 18:20  [ТС] #5
а как она будет угадывать? программа же не знает какое число я задумал?
0
Мимино
183 / 154 / 34
Регистрация: 22.05.2013
Сообщений: 450
Записей в блоге: 1
10.10.2013, 18:22 #6
Цитата Сообщение от names1995 Посмотреть сообщение
а как она будет угадывать? программа же не знает какое число я задумал?
Будет задавать Вам 2 вопроса.
0
names1995
11 / 11 / 6
Регистрация: 13.11.2012
Сообщений: 278
10.10.2013, 18:24  [ТС] #7
код не помешал бы ))

Добавлено через 1 минуту
интервал чисел от 0 до 11, программа будет задавать вопрос рандомно или с помощью if ?
0
Мимино
183 / 154 / 34
Регистрация: 22.05.2013
Сообщений: 450
Записей в блоге: 1
10.10.2013, 18:49 #8
Цитата Сообщение от names1995 Посмотреть сообщение
интервал чисел от 0 до 11, программа будет задавать вопрос рандомно или с помощью if ?
Так загадывается от 0 до 3 или от 0 до 11? Вопрос задается заранее известный. Ответ обрабатывается if/else
1
names1995
11 / 11 / 6
Регистрация: 13.11.2012
Сообщений: 278
10.10.2013, 18:53  [ТС] #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
cout <<"Игра Угадайка-11"<<endl;
        int x;
     cout <<"x>1?"<<endl; 
    cout << "1-Да - 2-Нет"<<endl;
     int vybor; cin >>vybor;
         if (x>1)
         {
           cout <<"x>2?"<<endl; 
    cout << "1-Да - 2-Нет"<<endl;
       
         } 
         else 
         {
           cout << "x<0?"<<endl;
            
        
         }
это будет выглядеть так?

Добавлено через 2 минуты
я писал игру, где число задается рандомно программой, но тут как-то не могу понять )))
0
Мимино
183 / 154 / 34
Регистрация: 22.05.2013
Сообщений: 450
Записей в блоге: 1
10.10.2013, 19:01 #10
Вот код для "Угадайка - 4"
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
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    char answer = 'y';
 
    cout << "Загадайте число от 0 до 3" << endl;
    cout << "Отстаок от деления загаданного числа на 3 равен 0? (y/n): ";
    cin >> answer;
 
    if (answer == 'y' || answer == 'Y')
    {
        cout << "При делении загаданного числа на 3, результат равен 0? (y/n): ";
        cin >> answer;
 
        if (answer == 'y' || answer == 'Y')
            cout << "Вы загадали число 0" << endl;
        else
            cout << "Вы загадали число 3" << endl;
    }
 
    else
    {
        cout << "Отстаок от деления загаданного числа на 3 равен 1? (y/n): ";
        cin >> answer;
 
        if (answer == 'y' || answer == 'Y')
            cout << "Вы загадали число 1" << endl;
        else
            cout << "Вы загадали число 2" << endl;
    }
 
    system("pause");
    return 0;
}
Нужно для угадайка 11?
1
names1995
11 / 11 / 6
Регистрация: 13.11.2012
Сообщений: 278
10.10.2013, 19:03  [ТС] #11
буду очень благодарен
0
Мимино
183 / 154 / 34
Регистрация: 22.05.2013
Сообщений: 450
Записей в блоге: 1
10.10.2013, 19:06 #12
Цитата Сообщение от names1995 Посмотреть сообщение
буду очень благодарен
Надо только подумать, как в 1 шаг вычислить 1 из 3-х интервалов по 4 значения, а так тоже самое.
1
names1995
11 / 11 / 6
Регистрация: 13.11.2012
Сообщений: 278
10.10.2013, 19:11  [ТС] #13
хотя, я думаю лучше будет если сам разберусь, нет?

Добавлено через 48 секунд
спс, попытаюсь разобраться сам )))

Добавлено через 8 секунд
вы помогли ))
0
Мимино
183 / 154 / 34
Регистрация: 22.05.2013
Сообщений: 450
Записей в блоге: 1
10.10.2013, 19:40 #14
Вот не приходит в голову, хоть "убей". За 4 вопроса знаю как, но это не интересно, хочется за 3... а мысли нет Если додумаюсь, напишу код.
0
names1995
11 / 11 / 6
Регистрация: 13.11.2012
Сообщений: 278
10.10.2013, 19:40  [ТС] #15
окей )))
0
Мимино
183 / 154 / 34
Регистрация: 22.05.2013
Сообщений: 450
Записей в блоге: 1
10.10.2013, 22:09 #16
Не выйдет сделать в 3 хода. Бинарный поиск (ответы да/нет) возволяют отсечь только 1/2 текущей выборки, поэтому только в 4 хода. Ну или 1-й вопрос должен быть не закрытым, тогда в 3 можно уложиться.
0
names1995
11 / 11 / 6
Регистрация: 13.11.2012
Сообщений: 278
10.10.2013, 22:17  [ТС] #17
а мне оказывается нужно было 15, за сколько ходов можно сделать это?

Добавлено через 7 минут
а то у меня получается так чтобы угадать три четных числа, приходится три хода
0
Мимино
183 / 154 / 34
Регистрация: 22.05.2013
Сообщений: 450
Записей в блоге: 1
10.10.2013, 22:22 #18
Цитата Сообщение от names1995 Посмотреть сообщение
а мне оказывается нужно было 15, за сколько ходов можно сделать это?
за 4. Вам нужно разбить 12 чисел в группы по 4. Для 4-х у Вас уже есть решение в 2 хода (только вместо вопроса x / 3 или x % 3 нужно брать (x % 4) / 3 или (x % 4) % 3).
Вопрос первый. Число больше 7? (да, интервал 8 9 10 11, нет, интервал 0 1 2 3 4 5 6 7)
Вопрос второй (если на первый ответ нет). При полчении ответа "да" на 1-й вопрос, второй нужно пропустить и задача решиться в 3 хода, но это полностью не исключает неопределенность. Сам вопрос: Загаданное число больше 3?. Да - интервал 4 5 6 7, нет - 0 1 2 3.
Вопрос 3 и 4 аналогичны угадайке 4, только с поправкой, которую я написал выше (загаданное число по модулю 4).
1
names1995
11 / 11 / 6
Регистрация: 13.11.2012
Сообщений: 278
10.10.2013, 22:26  [ТС] #19
C++
1
cout << "Ваше число четное? 1-Да, 2-Нет"<<endl;
у меня типа такого было

Добавлено через 1 минуту
Вам нужно разбить 12 чисел в группы по 4? не совсем понятно, четные и нечетные?
0
Мимино
183 / 154 / 34
Регистрация: 22.05.2013
Сообщений: 450
Записей в блоге: 1
10.10.2013, 22:32 #20
Цитата Сообщение от names1995 Посмотреть сообщение
Вам нужно разбить 12 чисел в группы по 4? не совсем понятно, четные и нечетные?
0 1 2 3
4 5 6 7 = 0 1 2 3 (4 % 4, 5 % 4....)
8 9 10 11 = 0 1 2 3 (8 % 4, 9 % 4...)
0
10.10.2013, 22:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2013, 22:32
Привет! Вот еще темы с решениями:

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс"
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран...

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания"
Создать класс Книга поля: название книги,количество страниц,год издания...

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

Определить тип данных "Запись", имеющий поля "Фамилия", "Пол", "Зарплата"
определить тип данных запись имеющий поля фамилия пол зарплата. определить...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru