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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 4.67
Pravdin
0 / 0 / 0
Регистрация: 29.04.2011
Сообщений: 8
#1

Игра "Угадай число" - C++

29.04.2011, 23:40. Просмотров 4244. Ответов 31
Метки нет (Все метки)

Помогите написать программу!!!Вот задание: Игра «Угадай число»: составьте программу определения компьютером задуманного человеком числа от 1 до 1000 с помощью 10 вопросов. Ответы человека – да, нет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.04.2011, 23:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Игра "Угадай число" (C++):

Готовая игра "угадай число" - C++
#include <iostream.h> int main () { int x=rnd%256; int d; int masks={0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01}; ...

Игра "Угадай число" - C++
Здравствуйте,помогите у кого есть время и возможность вообщем задание такое: нужно написать прогу,где юзер вводит любое число ...

Игра "Угадай число" - C++
#include <iostream> #include <ctime> using namespace std; int main(){ setlocale(LC_ALL,"rus"); int num, ques, i, menu=1,...

Игра "Угадай число" - C++
2)Написать программу, которая "задумывает" число в диапазоне от 1 до 10 и предлагает пользователю угадать число за 5 попыток. Ниже...

Игра "Угадай число" - C++
#include <iostream> #include <cstdlib> #include <ctime> using namespace std; int main() { srand(static_cast <unsigned int>...

Игра "Угадай число" - C++
Пожайлуста, решите задачу на С++ с условием:написать программу, которая "задумывает" число в диапазоне от 1 до 10 и предлагает пользователю...

31
neske
1505 / 872 / 84
Регистрация: 26.03.2010
Сообщений: 2,987
29.04.2011, 23:49 #2
Двоичный поиск в помощь.
0
Pravdin
0 / 0 / 0
Регистрация: 29.04.2011
Сообщений: 8
29.04.2011, 23:59  [ТС] #3
Цитата Сообщение от neske Посмотреть сообщение
Двоичный поиск в помощь.
Если можно, поподробнее и попонятнее??!!!

Добавлено через 6 минут
И еще забыл написать, что текст программы нужен для borland c++ 3.1
0
HeM01
36 / 24 / 2
Регистрация: 05.01.2010
Сообщений: 37
30.04.2011, 00:04 #4
0 шаг: число принадлежит интервалу [1, 1000], выбираем среднее - 500
1 шаг: спрашиваем: "число равно?", "число больше?".
2 шаг: если число равно, то все
3 шаг: если число больше, берем интервал [501, 1000] и среднее на нем, иначе берем интервал [1, 499], идем на шаг 1.

Примерно так построен бинарный поиск.
P.S. решение, кстати, может быть достигнуто меньше, чем за 10 шагов.
1
neske
1505 / 872 / 84
Регистрация: 26.03.2010
Сообщений: 2,987
30.04.2011, 00:16 #5
HeM01, ну 10 шагов - это худший случай) можно и за первый шаг угадать)
0
Pravdin
0 / 0 / 0
Регистрация: 29.04.2011
Сообщений: 8
30.04.2011, 11:37  [ТС] #6
Цитата Сообщение от HeM01 Посмотреть сообщение
0 шаг: число принадлежит интервалу [1, 1000], выбираем среднее - 500
1 шаг: спрашиваем: "число равно?", "число больше?".
2 шаг: если число равно, то все
3 шаг: если число больше, берем интервал [501, 1000] и среднее на нем, иначе берем интервал [1, 499], идем на шаг 1.

Примерно так построен бинарный поиск.
P.S. решение, кстати, может быть достигнуто меньше, чем за 10 шагов.
Этот способ решения уже пробовал, сразу возникают проблемы: как задать числа от 1 до 1000 и как отсеивать только нужный интервал чисел после каждого вопроса??
0
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
30.04.2011, 11:46 #7
Pravdin, вас же уже натолкнули на мысль... Не уж то так сложно поискать материал самостоятельно?
Вот: http://ru.wikipedia.org/wiki/Двоичный_поиск
0
Nursik77
273 / 233 / 21
Регистрация: 05.04.2011
Сообщений: 645
30.04.2011, 11:49 #8
0 шаг:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define n 1
int main()
{
int a[n];
int i;
clrscr();
randomize();
printf("Randomnoe chislo v intervale ot 1 do 1000: \n");
for(i=0;i<n;i++)
 {a[i]=random(1000);
  printf(" %i",a[i]);
 }
0
neske
1505 / 872 / 84
Регистрация: 26.03.2010
Сообщений: 2,987
30.04.2011, 13:27 #9
Nursik77, а где логика в создании массива под один элемент?)
0
Pravdin
0 / 0 / 0
Регистрация: 29.04.2011
Сообщений: 8
30.04.2011, 15:24  [ТС] #10
Как массивом задать числа от 1 до 1000???
0
valeriikozlov
Эксперт С++
4675 / 2501 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
30.04.2011, 15:42 #11
Pravdin, А смысл?
Для этой задачи хватит и двух переменных - нижняя граница и верхняя граница. Изначально нижняя граница = 1. Верхняя граница = 1000.
Очередной вопрос: задуманное число меньше (нижняя граница + верхняя граница)/2 ?
Если ответ да, то верхняя граница становится равной (нижняя граница + верхняя граница)/2. Если ответ нет, то нижняя граница становится равной (нижняя граница + верхняя граница)/2-1.
Главное во время остановится....
0
Pravdin
0 / 0 / 0
Регистрация: 29.04.2011
Сообщений: 8
30.04.2011, 16:00  [ТС] #12
Цитата Сообщение от valeriikozlov Посмотреть сообщение
Pravdin, А смысл?
Для этой задачи хватит и двух переменных - нижняя граница и верхняя граница. Изначально нижняя граница = 1. Верхняя граница = 1000.
Очередной вопрос: задуманное число меньше (нижняя граница + верхняя граница)/2 ?
Если ответ да, то верхняя граница становится равной (нижняя граница + верхняя граница)/2. Если ответ нет, то нижняя граница становится равной (нижняя граница + верхняя граница)/2-1.
Главное во время остановится....
Смысл в том что двоичный поиск ищит x элемент в массиве a[n], отсортированного в возрастающем порядке
0
valeriikozlov
Эксперт С++
4675 / 2501 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
30.04.2011, 16:04 #13
Цитата Сообщение от Pravdin Посмотреть сообщение
Вот задание: Игра «Угадай число»: составьте программу определения компьютером задуманного человеком числа от 1 до 1000 с помощью 10 вопросов. Ответы человека – да, нет.
Цитата Сообщение от Pravdin Посмотреть сообщение
Смысл в том что двоичный поиск ищит x элемент в массиве a[n], отсортированного в возрастающем порядке
А, ну тогда ладно!))))
0
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
30.04.2011, 16:09 #14
Pravdin, смысл в том, что если забить массив элементами от 1 до 1000 по возрастанию и делить этот массив на два, и если то же проделывать с числом 1000 - будет получаться одно и то же.
0
prazuber
110 / 110 / 3
Регистрация: 29.04.2010
Сообщений: 240
30.04.2011, 16:13 #15
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    int left = 1, right = 1000;
    while (right - left)
    {
        int middle = left + (right-left)/2;
        cout<<"Number > "<<middle<<" ?"<<endl;
        string ans; cin>>ans;
        if (ans == "yes")
            left = middle + 1;
        else
            if (ans == "no")
                right = middle;
    }
    cout<<"Your number is "<<left<<"!"<<endl;
    return 0;
}
Вроде больше 10 вопросов не получается.
0
30.04.2011, 16:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2011, 16:13
Привет! Вот еще темы с ответами:

Игра "Угадай число" - C++
Нужно доделать код программы... (Желательно до 24-го числа.. но можно и позже) Задание: напишите программу, которая будет уметь...

Игра "Угадай число" - C++
Ребят крч сегодня начал учить c++, задача была сделать игру &quot;Угадай число&quot; с фиксированным числом. Вроде начал делать и я не понимаю просто...

Игра "Угадай число" - C++
Написал программу угадывания числа. Программа работает, но есть проблема повторного вызова игры. Когда мы угадываем число, программа нам...

Game "Угадай число" как зделать запрет на "букви" ???? - C++
Привет всем кто решил помочь. Написал прогру, но есть проблемка, когда ввожу &quot;букву&quot; вся прога беситса как мне зделать так что б он...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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