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

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

Восстановить пароль Регистрация
 
Moure
1 / 1 / 0
Регистрация: 06.04.2015
Сообщений: 8
09.07.2015, 13:10     Угадайка с наименьшем количеством шагов #1
Доброго времени суток , сижу сижу , не выходит у меня что-то.
Игра угадайка , пользователь вводит число от 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++ Игра "угадайка" с использованием do while. Ошибка.
Угадайка от Страуструпа C++
Для одномерного числового массива вычислить разность между наибольшим и наименьшем элементами. 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     Угадайка с наименьшем количеством шагов
Ответ Создать тему
Опции темы

Текущее время: 18:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru