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

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

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

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

29.04.2011, 23:40. Просмотров 3939. Ответов 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
1473 / 840 / 72
Регистрация: 26.03.2010
Сообщений: 2,875
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
1473 / 840 / 72
Регистрация: 26.03.2010
Сообщений: 2,875
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
Эксперт С++
4958 / 3034 / 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
1473 / 840 / 72
Регистрация: 26.03.2010
Сообщений: 2,875
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
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
30.04.2011, 16:09     Игра "Угадай число" #14
Pravdin, смысл в том, что если забить массив элементами от 1 до 1000 по возрастанию и делить этот массив на два, и если то же проделывать с числом 1000 - будет получаться одно и то же.
prazuber
108 / 108 / 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 вопросов не получается.
Pravdin
0 / 0 / 0
Регистрация: 29.04.2011
Сообщений: 8
30.04.2011, 16:20  [ТС]     Игра "Угадай число" #16
Цитата Сообщение от PraZuBeR Посмотреть сообщение
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 вопросов не получается.
В ВС31 не хочет работать!что 3 строчка значит??
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
30.04.2011, 16:28     Игра "Угадай число" #17
Pravdin, снесите её, а расширения у хидеров поставьте .h
Pravdin
0 / 0 / 0
Регистрация: 29.04.2011
Сообщений: 8
30.04.2011, 16:29  [ТС]     Игра "Угадай число" #18
Цитата Сообщение от Pravdin Посмотреть сообщение
string ans
Он не понимает эту строчку!!((
SK01736
3 / 3 / 1
Регистрация: 21.01.2011
Сообщений: 29
30.04.2011, 16:34     Игра "Угадай число" #19
программа хр***вая, например загадал число 25, оно его не проверяло и под конец сказало что мое число это 1...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2011, 17:01     Игра "Угадай число"
Еще ссылки по теме:

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
prZzZ
Программист
110 / 90 / 5
Регистрация: 22.03.2011
Сообщений: 233
30.04.2011, 17:01     Игра "Угадай число" #20
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
 
int main()
{
    char buf[10];    
    int left = 1, right = 1000;
    while (right - left)
    {
        int middle = left + (right-left)/2;
        printf("Number > %d ?", middle);
        if(gets(buf))
            if(!strcmp(buf,"yes"))
                left = middle + 1;
            else
                if (!strcmp(buf,"no"))
                    right = middle;
    }
        printf("Your number is %d!\n", left);
    return 0;
}
Добавлено через 4 минуты
SK01736,
Number > 500 ?no
Number > 250 ?no
Number > 125 ?no
Number > 63 ?no
Number > 32 ?no
Number > 16 ?yes
Number > 24 ?yes
Number > 28 ?no
Number > 26 ?no
Number > 25 ?no
Your number is 25!
Press any key to continue

Yandex
Объявления
30.04.2011, 17:01     Игра "Угадай число"
Ответ Создать тему
Опции темы

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