0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 11
|
|
1 | |
Прошу подсказать, как сделать правильно задачу05.10.2013, 17:04. Показов 2371. Ответов 18
Метки нет (Все метки)
Написать игру. Программа задумывает число 0 – 100. Пользователю необходимо угадать число вводя предполагаемые варианты. После каждой попытки программа выводит одно из сообщений:
“число больше введённого” “число меньше введённого” “число угадано с N попытки” Максимальное число попыток – 10. Если число не было угадано с 10 попыток, программа выводит сообщение: “Вы проиграли! Правильный ответ N” Я ее написал То же что 2-е задание, только с другой стороны. Сейчас пользователь задумывает число, а программа пытается угадать. Пользователь НЕ вводит задуманное число в программу!!! Функциональное требование: Программа должна угадать число с 10 попыток! А вот с этой задачей у меня проблема. Не получается сделать так, чтобы она обязательно угадывала число. Помогите пожалуйста!!!Очень прошу.
0
|
05.10.2013, 17:04 | |
Ответы с готовыми решениями:
18
Не могу понять как правильно сделать задачу с функциями Я не прошу писать мне код, я прошу подсказать мне, что за структура требуется в задании Можете подсказать,как правильно описать глобальную переменную Прошу подсказать в чем ошибка |
0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 11
|
|
05.10.2013, 17:19 [ТС] | 3 |
что удалено? я попросил подсказать мне.я могу прислать мой код и если можете подскажите что нужно там исправить, чтобы программа обязательно угадала число.заранее спасибо
Добавлено через 1 минуту #include <iostream> #include <conio.h> #include <cmath> #include <windows.h> using namespace std; int main(){ setlocale(LC_ALL, "Russian"); st: system("CLS"); int l = 0, k = 0; char h; for(int i = 3; i > 0; i--){ cout << "Загадайте число, я начну его отгадывать через " << i << "."; Sleep(2500); //время задержки system("CLS"); } do{ srand(time(0)); l = rand()%100 + 1; system("CLS"); cout << "Вы загадали число " << l << "? Это моя " << k << " попытка из 10!" << endl << " Я угадал? (y/n): "; cin >> h; if(h > 'y') { cout<<"Bolshe"<<endl; //Подсказка 1 } system ("pause"); if(h < 'y') { cout<<"Menshee"<<endl; // Подсказка 2 } system ("pause"); if(h == 'y'){ system("CLS"); cout << "Я так и знал! " << " Хотите сыграть снова? (если да нажмите Enter)"; k = getch(); if(k == 13){ goto st; } } else{ k += 1; } if(k == 10){ system("CLS"); cout << "Я проиграл! " << " Хотите сыграть снова? (если да нажмите Enter)"; k = getch(); if(k == 13){ goto st; } else{ k = 10; } } }while(h != 'y' || k < 10); getch(); return 0; }
0
|
120 / 120 / 47
Регистрация: 29.03.2013
Сообщений: 237
|
|
05.10.2013, 17:19 | 4 |
Пусть ваша программа сначала вывод число 50. Затем, в зависимости от ответа выводит 25 или 75. Затем 12(37) или 62(87). И так далее. То есть каждый раз, она свой промежуток уменьшала в два раза. В конечном итоге она угадает ваше число меньше, чем за 10 попыток.
0
|
1 / 1 / 1
Регистрация: 11.11.2012
Сообщений: 23
|
|
05.10.2013, 17:20 | 5 |
В этой задаче надо использовать алгоритм бинарного поиска.
0
|
0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 11
|
|
05.10.2013, 17:20 [ТС] | 6 |
вот такая у меня получилась программа, но она угадывает число с некоторой вероятностью, а не обязательно угадывает. что исправить?
0
|
150 / 137 / 35
Регистрация: 29.07.2012
Сообщений: 709
|
|
05.10.2013, 17:24 | 8 |
Смотрите, начинайте допустим с 50, если число больше 50 то делайте рандом от 50 до 100, аналогично если число меньше 50. Ну и далее опять так-же рандом. Проделайте 3-5 рандомов, ну можно и больше, а потом если допустим он говорил больше то в числу +1, и вот так.
Добавлено через 1 минуту А это зачем? Просто 5 лишних строчек кода.
0
|
0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 11
|
|
05.10.2013, 17:24 [ТС] | 9 |
0
|
05.10.2013, 17:33 | 10 |
Вот выдаст ему рандом значение 50 3 раза подряд, и что тогда?
Добавлено через 5 минут 1. Берем максимальное значение (100) и делим на 2. 2. Если результат меньше загаданного, прибавляем к результату результат / 2. 3. Если результат меньше загаданного, результат2 + ((результат2 - результат1) / 2) 4. Повторять до полного удовлетворения 5. Если результат больше загаданного, reverse(мысль); pihta написал же, бинарный поиск. З.Ы. Для интервала 1-100 10 попыток много. 10 Попыток от 1 до 1000.
0
|
150 / 137 / 35
Регистрация: 29.07.2012
Сообщений: 709
|
|
05.10.2013, 17:36 | 11 |
О боже, вот наглядно.
Действие 1) Загадайте число от 1 до 100. Действие 2) Ваша загаданное число больше 50? Действие 3) Допустим юзер ввел да. Действие 4) Тогда программа должна рандомить от 50 до 100 Действие 5) И спрашивать угадал или нет? Если нет то спросить больше или меньше ваше число. Действие 6) Ну а далее уже цикл просто будет повторять действия, пока пользователь не скажет что программа угадала число. Ну и создайте еще 1 переменную которую будете увеличить при каждой итерации, да бы посчитать кол-во попыток.
0
|
0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 11
|
|
05.10.2013, 17:37 [ТС] | 12 |
как в моей программе можно сделать, чтобы в программе после предложенного ей очередного числа можно было выбирать: больше мое задуманное число или меньше, чтобы она меняла каждый раз диапазон, из которого нужно угадывать число
0
|
2 / 3 / 1
Регистрация: 02.10.2013
Сообщений: 29
|
|
05.10.2013, 17:38 | 13 |
Я бы алгоритм угадывания сделал бы по-другому.
А вообще goto - плохо Мой алгоритм: 1) Число больше 50? 2.1) Если да, оно больше 75? 3) в зависимости от ответа рандом или 50-75 или 75-100 2.2)Если нет, оно больше 25? 3) рандом или 25-50 или 1-25 и дальше спрашиваем, больше или меньше.
0
|
150 / 137 / 35
Регистрация: 29.07.2012
Сообщений: 709
|
|
05.10.2013, 17:39 | 14 |
0
|
05.10.2013, 17:41 | 15 |
рандом программы от 50 до 100 выдает значение 50.
пользователь говорит, что загаданное число больше 50. рандом программы от 50 до 100 выдает значение 50. пользователь говорит, что загаданное число больше 50. рандом программы от 50 до 100 выдает значение 50. пользователь говорит, что загаданное число больше 50. .... Попыток всего 10.
0
|
0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 11
|
|
05.10.2013, 17:45 [ТС] | 16 |
немного.я пытался прописать в программе предлагаемые программой варианты больше или меньше, помимо "я угадал?".но у меня не получилось
0
|
150 / 137 / 35
Регистрация: 29.07.2012
Сообщений: 709
|
|
05.10.2013, 17:56 | 17 |
Ну сначала вы должны спросить, угадали или нет? Если угадали то вывести число, если нет то спросить число больше либо меньше, ну а потом просто ряд действия и опять спрашивать и опять и опять и опять.
0
|
05.10.2013, 18:00 | 18 | |||||
Вот код
0
|
0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 11
|
|
05.10.2013, 18:05 [ТС] | 19 |
0
|
05.10.2013, 18:05 | |
05.10.2013, 18:05 | |
Помогаю со студенческими работами здесь
19
Прошу подсказать, что не так кодом можете подсказать как сделать часть кода Прошу поддержки, плохо понимаю как писать через стэк, нужно написать задачу связанную со строчкой Прошу сказать, правильно ли я решил, и , если не правильно, то указать ошибки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |