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

Программа, угадывающая число - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.78
Abendstern
3 / 3 / 0
Регистрация: 06.11.2011
Сообщений: 38
08.11.2011, 19:26     Программа, угадывающая число #1
Здравствуйте. Решаю задачку из книги Страуструпа:

"Напишите программу, угадывающую число. Пользователь должен задумать число от 1 до 100, a программа должна задавать вопросы, чтобы выяснить, какое число он задумал (например, 'Задуманное число меньше 50'). Ваша программа должна уметь идентифицировать число после не более семи попыток. Подсказка: используйте операторы < и =, a также конструкцию if-else."

Немного подвис над ней, не пойму каким боком использовать здесь операторы сравнения? Написал прогу без их использования, но с вводом ответов пользователем:

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
#include <iostream>
 
int main()
{
    int lower = 1; // нижняя граница диапазона
    int upper = 100; // верхняя граница 
    int middle; // середина
 
    char answer;
 
    while(lower != upper)
    {
        middle = (upper + lower) / 2;
        std::cout << "Задуманное число меньше " << middle << "? (y/n)";
        std::cin >> answer;
 
        if(answer == 'y')
            upper = middle;
        else
            lower = middle;
 
        std::cout << "[" << lower << " : " << upper << "]\n";
    }
 
    std::cout << "Ваше число =  " << lower << "\n";
    
    system("pause");
    return 0;
}
Работает мягко говоря через раз... например, если я загадываю число 46, то диапазон становится неизменным и равным [46 : 47], и до истины дело так и не доходит. Может условие выхода из цикла у меня неверное? Или вообще условие задачи я не так понял. Буду благодарен, если что-нибудь посоветуете.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2011, 19:26     Программа, угадывающая число
Посмотрите здесь:

программа четырехзначное число C++
Программа задумывает число от 1 до 10, и предлагает пользователю отгадать число за 5 попыток C++
C++ Программа на С, которая вводит число типа int с клавиатуры, преобразует ее в строку (str), выводит на дисплей число и строку.
C++ Программа, которая считывает число с клавиатуры и находит ближайшее справа число, которое является квадратом натурального числа
C++ Ведется набор цифр и надо чтобы программа из него сама сообразило число. То есть что бы программа сама раскидывала их по разрядам.
Дано 2-ух-значное число. Сделать так, чтоб программа преобразовала это число в новое число кол-во десятков C++
Программа, которая вводит число из пяти цифр, разделяет число на отдельные цифры C++
C++ Пол-ль вводит число от 50 до 100. Программа раскладывает число на сумму 4-х квадратов, всеми возможными способами

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
08.11.2011, 21:38     Программа, угадывающая число #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <iostream>
 
int main()
{
    int lower = 1; // нижняя граница диапазона
    int upper = 100; // верхняя граница
    int middle; // середина
 
    char answer;
 
    while( lower < upper )
    {
        middle = (upper + lower) / 2;
 
        do
        {
            std::cout << "Is it less or equal then " << middle << "? (y/n)";
            std::cin >> answer;
        }
        while( answer != 'y' && answer != 'n' );
 
        if( answer == 'y' )
            upper = middle;
        else
            lower = middle + 1;
 
        std::cout << "[" << lower << " : " << upper << "]\n";
    }
 
    std::cout << "Your number is  " << upper << "\n";
 
 
    return 0;
}
Вот так. Это классический бинарный поиск.
Yandex
Объявления
08.11.2011, 21:38     Программа, угадывающая число
Ответ Создать тему
Опции темы

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