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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Moure
1 / 1 / 0
Регистрация: 06.04.2015
Сообщений: 8
#1

Угадайка с наименьшем количеством шагов - C++

09.07.2015, 13:10. Просмотров 235. Ответов 3
Метки нет (Все метки)

Доброго времени суток , сижу сижу , не выходит у меня что-то.
Игра угадайка , пользователь вводит число от 1 до 100 , компьютер должен угадывать с наименьшем количеством шагов. К примеру.
Я выбрал число 14. Компьютер выдает 50? Я говорю ему через switch допустим меньше. Он делит пополам 50 и выдает 25 и спрашивает , я ему опять меньше, он выдает 12 или 13, я ему больше и тут, если я не ошибаюсь, он должен взять 25 и 12 или 13 сложить и поделить пополам и выдать 18 или 17.
Помогите пожалуйста или пните в нужном направлении. Только пожалуйста , по простому) Спасибо.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2015, 13:10     Угадайка с наименьшем количеством шагов
Посмотрите здесь:

Программа, определяющая слово с наибольшем и наименьшем количеством букв - C++
Народ, нужен код, который будет определять слово с наибольшем и наименьшем количеством букв в предложении, введенном с клавиатуры.

Угадайка от Страуструпа - C++
Писал, писал, устал. В логике ошибок нет. Как алгоритм оптимизировать и спагетти свернуть? #include "std_lib_facilities.h" int...

Угадайка от 1 до 3 в несколько раундов - C++
Здравствуйте! Совсем недавно начал осваивать кресты. В связи с этим еще одна тема на форуме по угадайке. Проблема в чем - хотел написать...

Вычислить разность между количеством отрицательных и количеством положительных элементов одномерного массива - C++
Здравствуйте уважаемые форумчане. Возникли трудности при решении задачи. :wall: Буду очень признателен тем, кто поможет и не останется...

Для одномерного числового массива вычислить разность между наибольшим и наименьшем элементами. - C++
7.7.1. Помогите, пожалуйста, решить задачу в С++. Для одномерного числового массива вычислить разность между наибольшим и...

Сортировка за O(1) шагов - C++
Задача: Предположим, мы сравниваем имлементацию сортировку вставками и сортировку слияниями на одной машине. На входе имеем элементы с...

Минимальное число шагов - C++
Задание такое: Дано целое неотрицательное число N (0<=N<=1000000). С ним можно делать следующее: - увеличить на 1 - уменьшить на 1 ...

Решить задачу с заданным числом шагов в указанном диапазоне - C++
сама задача: Используя циклы while, do-while и for, написать три варианта программы получения на экране таблицы синусов для значений...

Игра "Угадайка – 4" - C++
Игра "Угадайка – 4". Некто задумал целое число в интервале от 0 до 3. Нужно угадать это число, задавая вопросы. На эти вопросы Некто...

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


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrunkProgrammer
37 / 27 / 6
Регистрация: 09.06.2015
Сообщений: 100
09.07.2015, 13:34     Угадайка с наименьшем количеством шагов #2
Все просто, Вам нужно помнить последние два числа, которые "назвал" компьютер.
mr_mczakenberg
65 / 65 / 31
Регистрация: 10.04.2015
Сообщений: 281
09.07.2015, 14:00     Угадайка с наименьшем количеством шагов #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <iostream>
using namespace std;
 
int main() {
    int x;
    
    std::cout<<"Enter x";
    std::cin>>x;
    const int X_MAX = 100;
    if (x>X_MAX) return 0;
    
    int ch = X_MAX / 2;
    int left = 0, right = X_MAX+1 ; //иначе число 100 не находилось.
    char c;
    
    while(x!=ch)
    {
        std::cout<<"Chislo "<< ch <<" Bolshe (>) ili menshe (<) vashego monera?";
        std::cin>>c;
        if(c == '<')left = ch;  
        else if(c=='>') right = ch; 
        ch = (left+right)/2;    
    }
    
    std::cout<<"Vashe chislo = "<< ch; 
    return 0;
}
Добавлено через 13 минут
UPD: right = X_MAX+1 ; //иначе число 100 не находилось.
Moure
1 / 1 / 0
Регистрация: 06.04.2015
Сообщений: 8
09.07.2015, 14:04  [ТС]     Угадайка с наименьшем количеством шагов #4
mr_mczakenberg, Огромное спасибо , я уже начал читать теорию про двоичный поиск и тут вы добавили ответ, вышел отличный пример) Спасибо большое!
Yandex
Объявления
09.07.2015, 14:04     Угадайка с наименьшем количеством шагов
Ответ Создать тему
Опции темы

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