Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 15.01.2018
Сообщений: 5

Алгоритм игры "Угадай число"

15.01.2018, 19:08. Показов 5485. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток)) Мне надо написать алгоритм решения игры "Угадай число", а задача звучит так:

Первый игрок задумывает число от 1 до N. Второй может задавать вопросы вида «делится ли задуманное число на …». Надо отгадать задуманное число за наименьшее число вопросов.
Программа имитирует действия второго игрока и вычисляет делимость для ответов на вопросы.
Входные данные – N и задуманное число n
Выходные данные список вопросов, которые задает 2 игрок.

Надо использовать ООП, вот пытаюсь использовать китайскую теорему об остатках и Расширенный алгоритм Евклида, но никак не могу придумать((
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.01.2018, 19:08
Ответы с готовыми решениями:

Реализовать алгоритм игры «Угадай число»
Компьютер загадывает цифру, а пользователь должен её угадать с трех попыток. После каждой попытки компьютер дает пользователю подсказку....

Алгоритм игры "Угадай число"
Здравствуйте, уважаемые форумчане. Я новенькая) Мне нужна помощь. Мне нужно написать программу, которая угадывает задуманное пользователем...

Написать программу игры "Угадай число". Правила игры следующие. Играют двое. Один задумывает число, второй — угадывает. На каждом шаге угадывающий дел
Написать программу игры "Угадай число". Правила игры следующие. Играют двое. Один задумывает число, второй — угадывает. На каждом шаге...

10
485 / 411 / 126
Регистрация: 23.05.2016
Сообщений: 1,653
15.01.2018, 20:55
т.е. программа должна сформировать список вопросов по известному ответу?
0
0 / 0 / 0
Регистрация: 15.01.2018
Сообщений: 5
15.01.2018, 21:06  [ТС]
если бы(( но нет, алгоритму вообще неизвестно задуманное число.
0
485 / 411 / 126
Регистрация: 23.05.2016
Сообщений: 1,653
16.01.2018, 00:30
Тогда как понимать "за наименьшее число вопросов" ?
Пусть N=10, n=7.
Очевидно, наименьшее число вопросов равно 1. Это вопрос "делится ли задуманное число на 7 ?"
Но поскольку задуманное число спрашивающему неизвестно, то и гарантировать получение ответа за наименьшее число вопросов он не может.
0
Айлурофил
 Аватар для Massaraksh7
509 / 441 / 111
Регистрация: 27.05.2017
Сообщений: 2,647
Записей в блоге: 5
16.01.2018, 02:41
Нет, если я правильно понимаю, наименьшее число вопросов - это число вопросов, за которое число угадывается с гарантией. Например, для случая N=10, это 4 вопроса.
1
485 / 411 / 126
Регистрация: 23.05.2016
Сообщений: 1,653
16.01.2018, 11:04
Лучший ответ Сообщение было отмечено Никита_21 как решение

Решение

Тогда надо задавать вопросы вида "делится ли задуманное число на ki ?", где ki - простые числа не превышающие N.
Если получаем положительный ответ для некоторого числа А, то начинаем задавать вопросы вида "делится ли задуманное число на А*kj ?", где kj - простые числа не превышающие N/А
и т.д.
1
Модератор
Эксперт функциональных языков программирования
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
16.01.2018, 16:05
Цитата Сообщение от Sindbad_M Посмотреть сообщение
начинаем задавать вопросы вида "делится ли задуманное число на А*kj ?", где kj - простые числа не превышающие N/А
Не простые, а простые, умноженные на ki.
0
485 / 411 / 126
Регистрация: 23.05.2016
Сообщений: 1,653
16.01.2018, 16:15
Цитата Сообщение от Shamil1 Посмотреть сообщение
умноженные на ki
таракан в моей голове блокирует подобные неопределенности.
ki - множество чисел. То число из этого множества для которого получен положительный ответ я обозначил А.
1
Модератор
Эксперт функциональных языков программирования
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
16.01.2018, 16:47
Sindbad_M,
Извиняюсь, не заметил.
0
0 / 0 / 0
Регистрация: 15.01.2018
Сообщений: 5
17.01.2018, 13:14  [ТС]
Спасибо! Основываясь на ваш алгоритм, вроде нашел решение)) щас попробую написать прогу))

Добавлено через 19 часов 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
55
56
57
58
59
60
#include "guessNum.h"
 
 
int GuessNum::guessNumFunc(int N)
{
    int forInterval=1, interval=N, currInterval=N, dividendNum=2, dividendNum1=1, answer=0;
    bool flag=false;
 
    while (interval/forInterval !=1)
    {
    cout<<"Is the number divided by " << dividendNum*dividendNum1<< " If yes, then press 1, if not, then 0"<<endl;
    cin>>answer;
    if(answer==0) 
        {
            if(dividendNum1>currInterval || currInterval==1) {return forInterval;}
 
            if(!flag)
            {
            do{ 
                   dividendNum ++; 
                }
                    while(!primeNum( dividendNum));
            }
            else 
            {
            do{ 
                   dividendNum1 ++; 
                }
                    while(!primeNum( dividendNum1));
            }
              
                
        }
                        else 
                                {
                                    flag=true;
 
                                    forInterval = dividendNum*dividendNum1;
                                    
                                    currInterval=interval/forInterval;
                                    
                                    dividendNum=forInterval; dividendNum1 = 2;
                                    if(currInterval==1){return forInterval;}
                                    if(interval/forInterval==2) {return forInterval;}
 
 
                                }   
    };
 
}
 
 
bool GuessNum:: primeNum(int n)
    {
        int num=n;
    for (int i = 2; i<=sqrt(num); i++) 
        if (num % i == 0) 
            return false;   
    return true; 
    }
Вот, написал. Работает нормально(по крайней мере на моих тестах)
0
0 / 0 / 0
Регистрация: 15.01.2018
Сообщений: 5
20.01.2018, 17:13  [ТС]
Мгушник, если ты читаешь это, то привет из прошлого))

ПИСИ: терпение тебе))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.01.2018, 17:13
Помогаю со студенческими работами здесь

Создание игры угадай число
Написать код игры &quot;Угадай число&quot; с базой данных куда записывается имя и фамилия пользователя и с какой попытки он угадал число. Заранее...

Создание игры «Угадай число»
Программа, реализует следующую игру: компьютер, задумывает число от 0 до 1000, игрок пытается его отгадать за 10 вопросов вида: верно ли,...

Составить программу игры «Угадай число».
Составить программу игры «Угадай число». Компьютер загадывает трехзначное число при помощи генератора случайных чисел. Пользователь вводит...

Составить программу игры «Угадай число»
Составить программу игры «Угадай число». Компьютер загадывает трехзначное число при помощи генератора случайных чисел. Пользователь вводит...

Реализовать программу игры «Угадай число»
Реализовать программу игры «Угадай число». Компьютер «задумывает» число в выбранном пользователем интервале. Если пользователь вводит...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
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