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

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

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

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

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

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

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

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

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

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

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
neske
1479 / 846 / 75
Регистрация: 26.03.2010
Сообщений: 2,904
29.04.2011, 23:49     Игра "Угадай число" #2
Двоичный поиск в помощь.
Pravdin
0 / 0 / 0
Регистрация: 29.04.2011
Сообщений: 8
29.04.2011, 23:59  [ТС]     Игра "Угадай число" #3
Цитата Сообщение от neske Посмотреть сообщение
Двоичный поиск в помощь.
Если можно, поподробнее и попонятнее??!!!

Добавлено через 6 минут
И еще забыл написать, что текст программы нужен для borland c++ 3.1
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 шагов.
neske
1479 / 846 / 75
Регистрация: 26.03.2010
Сообщений: 2,904
30.04.2011, 00:16     Игра "Угадай число" #5
HeM01, ну 10 шагов - это худший случай) можно и за первый шаг угадать)
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 и как отсеивать только нужный интервал чисел после каждого вопроса??
silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
30.04.2011, 11:46     Игра "Угадай число" #7
Pravdin, вас же уже натолкнули на мысль... Не уж то так сложно поискать материал самостоятельно?
Вот: http://ru.wikipedia.org/wiki/Двоичный_поиск
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]);
 }
neske
1479 / 846 / 75
Регистрация: 26.03.2010
Сообщений: 2,904
30.04.2011, 13:27     Игра "Угадай число" #9
Nursik77, а где логика в создании массива под один элемент?)
Pravdin
0 / 0 / 0
Регистрация: 29.04.2011
Сообщений: 8
30.04.2011, 15:24  [ТС]     Игра "Угадай число" #10
Как массивом задать числа от 1 до 1000???
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
30.04.2011, 15:42     Игра "Угадай число" #11
Pravdin, А смысл?
Для этой задачи хватит и двух переменных - нижняя граница и верхняя граница. Изначально нижняя граница = 1. Верхняя граница = 1000.
Очередной вопрос: задуманное число меньше (нижняя граница + верхняя граница)/2 ?
Если ответ да, то верхняя граница становится равной (нижняя граница + верхняя граница)/2. Если ответ нет, то нижняя граница становится равной (нижняя граница + верхняя граница)/2-1.
Главное во время остановится....
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], отсортированного в возрастающем порядке
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
30.04.2011, 16:04     Игра "Угадай число" #13
Цитата Сообщение от Pravdin Посмотреть сообщение
Вот задание: Игра «Угадай число»: составьте программу определения компьютером задуманного человеком числа от 1 до 1000 с помощью 10 вопросов. Ответы человека – да, нет.
Цитата Сообщение от Pravdin Посмотреть сообщение
Смысл в том что двоичный поиск ищит x элемент в массиве a[n], отсортированного в возрастающем порядке
А, ну тогда ладно!))))
silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
30.04.2011, 16:09     Игра "Угадай число" #14
Pravdin, смысл в том, что если забить массив элементами от 1 до 1000 по возрастанию и делить этот массив на два, и если то же проделывать с числом 1000 - будет получаться одно и то же.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2011, 16:13     Игра "Угадай число"
Еще ссылки по теме:

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

"Угадай число" (напишите программу, хочу проверить со своей). - C++
&quot;Угадай число&quot;. Пользователю предлагается отгадать число за 10 попыток. Программа даёт подсказки вида больше, меньше.

Реализовать генерацию случайных чисел для игры "Угадай число" - C++
Всем привет!написал код для игры. По условию компьютер должен загадать число от 1 до 100 и пользователь должен отгадать это число за 6...

Исправить ошибки в программе "угадай число" - C++
суть программы, генерирует случайное число от 1 до 1000, запрашивает число и говорит больше или меньше, если введено не число выдаёт...

Нужен совет по задаче "Угадай число" - C++
Вася загадал число от 1 до N. За какое наименьшее количество вопросов (на которые Вася отвечает &quot;да&quot; или &quot;нет&quot;) Петя может угадать Васино...


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

Или воспользуйтесь поиском по форуму:
prazuber
109 / 109 / 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 вопросов не получается.
Yandex
Объявления
30.04.2011, 16:13     Игра "Угадай число"
Ответ Создать тему
Опции темы

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