Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 11

Прошу подсказать, как сделать правильно задачу

05.10.2013, 17:04. Показов 2717. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать игру. Программа задумывает число 0 – 100. Пользователю необходимо угадать число вводя предполагаемые варианты. После каждой попытки программа выводит одно из сообщений:
“число больше введённого”
“число меньше введённого”
“число угадано с N попытки”
Максимальное число попыток – 10. Если число не было угадано с 10 попыток, программа выводит сообщение:
“Вы проиграли! Правильный ответ N”

Я ее написал

То же что 2-е задание, только с другой стороны. Сейчас пользователь задумывает число, а программа пытается угадать. Пользователь НЕ вводит задуманное число в программу!!!

Функциональное требование:
Программа должна угадать число с 10 попыток!

А вот с этой задачей у меня проблема. Не получается сделать так, чтобы она обязательно угадывала число. Помогите пожалуйста!!!Очень прошу.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.10.2013, 17:04
Ответы с готовыми решениями:

Не могу понять как правильно сделать задачу с функциями
В рамках университетского Дня спорта в соревнованиях по кроссу участвуют команды факультетов, состоящие из трех преподавателей. При...

Я не прошу писать мне код, я прошу подсказать мне, что за структура требуется в задании
Написать программу для работы по запросам оператора с приоритетной очередью запросов. Куча отображается в память двоичным деревом. ...

Можете подсказать,как правильно описать глобальную переменную
Как правильно описать глобальную переменную чтоб читалась во всех формах программы,и можно ли ,допустим при нажатие на кнопку в форме2...

18
 Аватар для Мимино
191 / 161 / 35
Регистрация: 22.05.2013
Сообщений: 455
Записей в блоге: 1
05.10.2013, 17:14
Пользователь должен вводить варианты больше/меньше/равно после каждой попытки программы угадать число. В чем сложность? Алгоритм "угадывания" Вам известен?
0
0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 11
05.10.2013, 17:19  [ТС]
что удалено? я попросил подсказать мне.я могу прислать мой код и если можете подскажите что нужно там исправить, чтобы программа обязательно угадала число.заранее спасибо

Добавлено через 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
Пусть ваша программа сначала вывод число 50. Затем, в зависимости от ответа выводит 25 или 75. Затем 12(37) или 62(87). И так далее. То есть каждый раз, она свой промежуток уменьшала в два раза. В конечном итоге она угадает ваше число меньше, чем за 10 попыток.
0
1 / 1 / 1
Регистрация: 11.11.2012
Сообщений: 23
05.10.2013, 17:20
В этой задаче надо использовать алгоритм бинарного поиска.
0
0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 11
05.10.2013, 17:20  [ТС]
вот такая у меня получилась программа, но она угадывает число с некоторой вероятностью, а не обязательно угадывает. что исправить?
0
 Аватар для Мимино
191 / 161 / 35
Регистрация: 22.05.2013
Сообщений: 455
Записей в блоге: 1
05.10.2013, 17:22
Цитата Сообщение от vladislavhod Посмотреть сообщение
что удалено? я попросил подсказать мне.я могу прислать мой код и если можете подскажите что нужно там исправить, чтобы программа обязательно угадала число.заранее спасибо

Добавлено через 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;
}
Я правильно понимаю, Вы пытаетесь угадать число рандомом в 10 попыток?
0
 Аватар для Bend3r
150 / 137 / 35
Регистрация: 29.07.2012
Сообщений: 709
05.10.2013, 17:24
Смотрите, начинайте допустим с 50, если число больше 50 то делайте рандом от 50 до 100, аналогично если число меньше 50. Ну и далее опять так-же рандом. Проделайте 3-5 рандомов, ну можно и больше, а потом если допустим он говорил больше то в числу +1, и вот так.

Добавлено через 1 минуту
Цитата Сообщение от Мимино Посмотреть сообщение
for(int i = 3; i > 0; i--){
cout << "Загадайте число, я начну его отгадывать через " << i << ".";
Sleep(2500); //время задержки
system("CLS");
}
А это зачем? Просто 5 лишних строчек кода.
0
0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 11
05.10.2013, 17:24  [ТС]
Цитата Сообщение от Мимино Посмотреть сообщение
Пользователь должен вводить варианты больше/меньше/равно после каждой попытки программы угадать число. В чем сложность? Алгоритм "угадывания" Вам известен?
нет.расскажите, пожалуйста
0
 Аватар для Мимино
191 / 161 / 35
Регистрация: 22.05.2013
Сообщений: 455
Записей в блоге: 1
05.10.2013, 17:33
Цитата Сообщение от Bend3r Посмотреть сообщение
Смотрите, начинайте допустим с 50, если число больше 50 то делайте рандом от 50 до 100, аналогично если число меньше 50. Ну и далее опять так-же рандом. Проделайте 3-5 рандомов, ну можно и больше, а потом если допустим он говорил больше то в числу +1, и вот так.
Вот выдаст ему рандом значение 50 3 раза подряд, и что тогда?

Добавлено через 5 минут
Цитата Сообщение от vladislavhod Посмотреть сообщение
нет.расскажите, пожалуйста
1. Берем максимальное значение (100) и делим на 2.
2. Если результат меньше загаданного, прибавляем к результату результат / 2.
3. Если результат меньше загаданного, результат2 + ((результат2 - результат1) / 2)
4. Повторять до полного удовлетворения
5. Если результат больше загаданного, reverse(мысль);
pihta написал же, бинарный поиск.
З.Ы. Для интервала 1-100 10 попыток много. 10 Попыток от 1 до 1000.
0
 Аватар для Bend3r
150 / 137 / 35
Регистрация: 29.07.2012
Сообщений: 709
05.10.2013, 17:36
Цитата Сообщение от Мимино Посмотреть сообщение
Вот выдаст ему рандом значение 50 3 раза подряд, и что тогда?
О боже, вот наглядно.
Действие 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  [ТС]
как в моей программе можно сделать, чтобы в программе после предложенного ей очередного числа можно было выбирать: больше мое задуманное число или меньше, чтобы она меняла каждый раз диапазон, из которого нужно угадывать число
0
2 / 3 / 1
Регистрация: 02.10.2013
Сообщений: 29
05.10.2013, 17:38
Я бы алгоритм угадывания сделал бы по-другому.
А вообще goto - плохо
Мой алгоритм:
1) Число больше 50?
2.1) Если да, оно больше 75?
3) в зависимости от ответа рандом или 50-75 или 75-100
2.2)Если нет, оно больше 25?
3) рандом или 25-50 или 1-25 и дальше спрашиваем, больше или меньше.
0
 Аватар для Bend3r
150 / 137 / 35
Регистрация: 29.07.2012
Сообщений: 709
05.10.2013, 17:39
Цитата Сообщение от vladislavhod Посмотреть сообщение
как в моей программе можно сделать, чтобы в программе после предложенного ей очередного числа можно было выбирать: больше мое задуманное число или меньше, чтобы она меняла каждый раз диапазон, из которого нужно угадывать число
Ветвление вам такое знакомо?
0
 Аватар для Мимино
191 / 161 / 35
Регистрация: 22.05.2013
Сообщений: 455
Записей в блоге: 1
05.10.2013, 17:41
Цитата Сообщение от Bend3r Посмотреть сообщение
О боже, вот наглядно.
Действие 1) Загадайте число от 1 до 100.
Действие 2) Ваша загаданное число больше 50?
Действие 3) Допустим юзер ввел да.
Действие 4) Тогда программа должна рандомить от 50 до 100
...
рандом программы от 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  [ТС]
Цитата Сообщение от Bend3r Посмотреть сообщение
Ветвление вам такое знакомо?
немного.я пытался прописать в программе предлагаемые программой варианты больше или меньше, помимо "я угадал?".но у меня не получилось
0
 Аватар для Bend3r
150 / 137 / 35
Регистрация: 29.07.2012
Сообщений: 709
05.10.2013, 17:56
Ну сначала вы должны спросить, угадали или нет? Если угадали то вывести число, если нет то спросить число больше либо меньше, ну а потом просто ряд действия и опять спрашивать и опять и опять и опять.
0
 Аватар для Мимино
191 / 161 / 35
Регистрация: 22.05.2013
Сообщений: 455
Записей в блоге: 1
05.10.2013, 18:00
Вот код
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
35
#include <iostream>
using namespace std;
 
void choise(int, int);
 
int main()
{
    setlocale(LC_ALL, "Russian");
    cout << "Загадайте число от 1 до 1000, и я угадаю его за 10 попыток!" << endl << endl;
 
    choise(1, 1000);
 
    system("pause");
    return 0;
}
 
void choise(int down, int up)
{
    static int count = 0;
    count++;
    int ch;
    cout << "Вы загадали число: " << ((down + up) / 2) << endl;
    cout << "Если мое число больше загаданного, введите 1, если меньше - 0, если угадал - 2: ";
    cin >> ch;
    if (!ch)
        choise(((down + up) / 2), up);
    else
        if (ch == 1)
            choise(down, ((down + up) / 2));
    if (ch > 1)
    {
        cout << "Я угадал! И всего за " << count << " попыток!" << endl;
        return;
    }
}
0
0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 11
05.10.2013, 18:05  [ТС]
Цитата Сообщение от Мимино Посмотреть сообщение
Вот код
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
35
#include <iostream>
using namespace std;
 
void choise(int, int);
 
int main()
{
    setlocale(LC_ALL, "Russian");
    cout << "Загадайте число от 1 до 1000, и я угадаю его за 10 попыток!" << endl << endl;
 
    choise(1, 1000);
 
    system("pause");
    return 0;
}
 
void choise(int down, int up)
{
    static int count = 0;
    count++;
    int ch;
    cout << "Вы загадали число: " << ((down + up) / 2) << endl;
    cout << "Если мое число больше загаданного, введите 1, если меньше - 0, если угадал - 2: ";
    cin >> ch;
    if (!ch)
        choise(((down + up) / 2), up);
    else
        if (ch == 1)
            choise(down, ((down + up) / 2));
    if (ch > 1)
    {
        cout << "Я угадал! И всего за " << count << " попыток!" << endl;
        return;
    }
}
спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.10.2013, 18:05
Помогаю со студенческими работами здесь

Прошу подсказать в чем ошибка
Нужно заменить элементы главной диагонали на элементы побочной диагонали матрицы, вот что получается: #include &lt;iostream.h&gt; ...

Прошу подсказать, что не так кодом
Доброго времени суток! Уважаемые пользователи. Я начинающий кодер, работающий в Code::Blocks. У меня возникли проблемы с этим кодом. ...

можете подсказать как сделать часть кода
Можете подсказать как в определенном процессе найти определенный string и изменить его ? Буду очень благодарен за помощь.

Прошу поддержки, плохо понимаю как писать через стэк, нужно написать задачу связанную со строчкой
Задача такова: &quot;задан текст напечатать все слова которые отличны от последнего слова и удовлетворяют следущему свойству:слово начинается...

Прошу сказать, правильно ли я решил, и , если не правильно, то указать ошибки
Есть задачка \sum_{i=0}^{8}\sum_{j=0}^{10}\sum_{k=0}^{3}\left(\frac{i+3k-4j}{2+3i+4j} \right) и есть мой код (сразу говорю, я...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru