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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.60
lastfin
10 / 10 / 0
Регистрация: 06.02.2012
Сообщений: 52
#1

Угадать заданное число (1-100) - C++

09.07.2012, 16:05. Просмотров 2316. Ответов 12
Метки нет (Все метки)

Требуется за 7 шагов угадать заданное пользователем число, путем задачи вопросов. Что получилось:

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
#include "std_lib_facilities.h";
 
    int main()
    {
    setlocale(LC_CTYPE,"RUS");
    setlocale( LC_ALL,"" );
    cout << "Пожалуйста, загадайте число (0-100)\n";
    int i =0;
    int medium = 50;
        
        for(int i=0; i<7; ++i)
        {
        cout<< "Ваше число меньше или равно " << medium << "? (да/нет)\n";
        string answer = "???";
        cin >> answer;
        if (answer == "да")
            medium = medium/2;
        
        if (answer == "нет")
        medium =medium/2+medium;
        }
 
        cout << medium;
        system ("pause");
    }
Проблема в том, что переменная medium не принимает значения, которое должна по условию, которое написано в теле цикла. Как первый раз спрашивает про число 50, так и следующие 6 раз то же самое. Не подскажете, как это исправить?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2012, 16:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Угадать заданное число (1-100) (C++):

Пользователь загадывает число от 1 до 100, а программа должна его угадать - C++
Подскажите алгоритм выполнения такой задачи: Пользователь загадывает число от 1 до 100, а программа должна его угадать, задавая вопросы...

Угадать число от 1 до 100 за 7 попыток: есть ли более изящный подход, чем if/else? - C++
Задача заключается в том что нужно написать программу который угадывает число пользователя от 1 до 100 есть только 7 попыток. Я понимаю что...

Программа, которая в диапазоне от 0 до 100 загадывает число, а пользователь должен его угадать - C++
Есть вопрос, как написать программу, в которая в дипозоне от 0 до 100 загадывает число, а мы, пользователи должны угадать число. При вводе...

Разрезать круглую пиццу на заданное число кусков, делая заданное число прямолинейных разрезов ножом - C++
Помогите, пожалуйста решить задачу. Дана пицца, имеющая форму круга. Её нужно разрезать на заданное число кусков, делая заданное число...

Написать игру “Угадай число!”. Компьютер загадывает число в определенном диапазоне, а пользователь пытается его угадать - C++
помогите решить Написать игру “Угадай число!”. Компьютер загадывает число в определенном диапазоне, а пользователь пытается его...

Заменить числа последовательности, превышающие заданное число, на заданное число - C++
решите..а то вообще не понимаю..

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Alt_Shift
50 / 50 / 2
Регистрация: 28.05.2012
Сообщений: 161
09.07.2012, 16:22 #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
int main()
    {
    setlocale(LC_CTYPE,"RUS");
    setlocale( LC_ALL,"" );
    cout << "Пожалуйста, загадайте число (0-100)\n";
    int i =0;
    int medium = 50;
        
        for(int i=0; i<7; ++i)
        {
        cout<< "Ваше число меньше или равно " << medium << "? (y/n)\n";
       char answer;
        cin >> answer;
        if (answer == 'y')
            medium = medium/2;
        
        if (answer == 'n')
        medium =medium/2+medium;
        }
 
        cout << medium;
        system ("pause");
    }
так работает
1
lastfin
10 / 10 / 0
Регистрация: 06.02.2012
Сообщений: 52
09.07.2012, 16:47  [ТС] #3
Цитата Сообщение от Alt_Shift Посмотреть сообщение
так работает
Спасибо, только непонятно почему строки в отличие от символов не сравниваются по нормальному.
0
Alt_Shift
50 / 50 / 2
Регистрация: 28.05.2012
Сообщений: 161
09.07.2012, 16:58 #4
с кодировкой русских символов наверное проблема. Попробуйте "да" и "нет" заменить на "da" и "net" или вместо
C++
1
2
setlocale(LC_CTYPE,"RUS");
    setlocale( LC_ALL,"" );
поставить
C++
1
2
3
setlocale(LC_ALL, "Russian");
    SetConsoleCP (1251);
    SetConsoleOutputCP (1251);
и в свойствах консоли поставить шрифт lucida console
0
Kastaneda
Форумчанин
Эксперт С++
4653 / 2862 / 228
Регистрация: 12.12.2009
Сообщений: 7,271
Записей в блоге: 2
Завершенные тесты: 1
09.07.2012, 19:21 #5
Цитата Сообщение от Alt_Shift Посмотреть сообщение
так работает
Где работает то? Оно же ни чего не отгадывает!
0
Catstail
Модератор
22615 / 10976 / 1779
Регистрация: 12.02.2012
Сообщений: 18,114
09.07.2012, 19:52 #6
Господи! Да нельзя же так (ans == "y") сранивать строки. Ни в C, ни в С++!

Надо:

C++
1
if (strcmp(ans,"y"))
0
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
09.07.2012, 19:55 #7
Цитата Сообщение от Catstail Посмотреть сообщение
Господи! Да нельзя же так (ans == "y") сранивать строки. Ни в C, ни в С++!
Если это std::string(что, собственно, и представлено у ТС), то можно. И это предпочтительнее strcmp, хотя бы потому, что так логичнее выглядит.
0
Catstail
Модератор
22615 / 10976 / 1779
Регистрация: 12.02.2012
Сообщений: 18,114
09.07.2012, 20:01 #8
Но в коде-то написано char answer...
0
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
09.07.2012, 20:02 #9
Цитата Сообщение от Catstail Посмотреть сообщение
Но в коде-то написано char answer
Во втором - да. Но и сравнивается там чар с чаром.
0
Catstail
Модератор
22615 / 10976 / 1779
Регистрация: 12.02.2012
Сообщений: 18,114
09.07.2012, 20:02 #10
Оп... Не туда заглянул. Виноват.
0
Alt_Shift
50 / 50 / 2
Регистрация: 28.05.2012
Сообщений: 161
09.07.2012, 20:51 #11
Цитата Сообщение от Kastaneda Посмотреть сообщение
Где работает то? Оно же ни чего не отгадывает!
вообще то отгадывает
0
Kastaneda
Форумчанин
Эксперт С++
4653 / 2862 / 228
Регистрация: 12.12.2009
Сообщений: 7,271
Записей в блоге: 2
Завершенные тесты: 1
09.07.2012, 21:07 #12
Цитата Сообщение от Alt_Shift Посмотреть сообщение
вообще то отгадывает
Ну, совпадения тоже бывают Какое число?
0
Alt_Shift
50 / 50 / 2
Регистрация: 28.05.2012
Сообщений: 161
09.07.2012, 21:49 #13
Цитата Сообщение от Kastaneda Посмотреть сообщение
Ну, совпадения тоже бывают Какое число?
да хотя бы 25. Сам алгоритм для угадывания числа странный конечно. Но вопрос был "почему не меняется значение переменной", его вроде как раскрыли. Я бы тоже, конечно, сделал иначе и воспользовался чем то вроде
C++
1
2
3
4
5
6
7
8
9
10
11
for(int i=0; i<7; ++i)
        {
        cout<< "Ваше число меньше или равно " << medium << "? (y/n)\n";
        char answer;
        cin >> answer;
        if (answer == "y")
            medium =rand()%medium;
        
        if (answer == "n")
        medium =medium+rand()%(100-medium)
        }
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2012, 21:49
Привет! Вот еще темы с ответами:

Написать программу, реализует следующую игровую ситуацию: компьютер задает случайное целое число в интерали от 1 до 10, а мне нужно это число угадать - C++
Написать программу, реализует следующую игровую ситуацию: компьютер задает случайное целое число в интерали от 1 до 10, а мне нужно это...

угадать число - C++
Написать прогу, которая &quot;задумывает&quot; число в диапозоне от 1 до 10 и предлогает пользователю угадать число за 5 попыток.

Угадать задуманное пользователем число - C++
Описание словами: (я загадала 3) Прога пишет &quot;Введите число с которого начать отсчет&quot; 2 &quot;Введите число которым закончить отсчет&quot; 5 ...

Написать программу, которая "задумывает" число в диапазоне от 1 до 10 и предлагает пользователю угадать число - C++
Кто знает как на С++ можно решить данную задачу при помощи цикла do while? Написать программу, которая &quot;задумывает&quot; число в диапазоне от...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
09.07.2012, 21:49
Ответ Создать тему
Опции темы

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