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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 35, средняя оценка - 5.00
Shevva
17 / 17 / 0
Регистрация: 13.09.2009
Сообщений: 140
#1

Игра - C++

07.12.2009, 20:22. Просмотров 5497. Ответов 14
Метки нет (Все метки)

Помогите решить следующую задачу:
Написать программу, которая отгадывает задуманное число в интервале [0, n-1 ] за n вопросов типа "Ваше число, меньше этого?"
Знаю что она решается через рекурсию, но как, не понимаю
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2009, 20:22
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Игра (C++):

Игра слов, игра Scrabble - C++
Задание: Создать программу для решения задачи построения слова из некоторого множества букв (игра Scrabble) используя алгоритмы поиска в...

игра (с++) - C++
Здравствуйте! Нужно составить игру про шарики. Если в линии встречаются 3 или больше одинаковых цветов шарико, то нужно этот ряд шаров...

2Д-игра - C++
Здравствуйте, хочу создать 2D игру. Раньше такие игры писал на C++ Builder, но больше не хочу (не серьёзно это ка-кто). Изучаю OpenGL, но...

Игра - C++
Доброе время суток! Хочу написать свою первую, простую игру на С++. Посоветуйте с чего начать.

Игра на C++ - C++
Господа эксперты, допустим что у меня в графическом режиме есть некий статический обьект. Как мне им управлять с клавиатуры?...

Игра на C++ - C++
Нужно написать какую-небуть не особо сложную игру на C++. В голову приходять разные арканоиды/танчики/бомбермены, но для них, насколько я...

14
valeriikozlov
Эксперт С++
4682 / 2508 / 322
Регистрация: 18.08.2009
Сообщений: 4,550
07.12.2009, 20:34 #2
Shevva,
Серьезная задача!
Написать программу, которая отгадывает задуманное число в интервале [0, n-1 ] за n вопросов типа "Ваше число, меньше этого?"
Именно для этого условия я опишу Вам как будут выглядеть вопросы на экране:
Ваше число меньше 1;
Ваше число меньше 2;
Ваше число меньше 3;
и т.д.
0
Shevva
17 / 17 / 0
Регистрация: 13.09.2009
Сообщений: 140
07.12.2009, 20:41  [ТС] #3
я это понимаю, ток как сделать прогу, чтоб она выводила на экран, что ты написал((
0
valeriikozlov
Эксперт С++
4682 / 2508 / 322
Регистрация: 18.08.2009
Сообщений: 4,550
07.12.2009, 20:56 #4
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
#include <iostream.h>
#include <windows.h>
void rec_func(int &i, int &n)
{
    char s;
    cout<<"Г‚Г*ГёГҐ ÷èñëî ìåГ*ГјГёГҐ "<<i<<"?"<<endl;
    cout<<"Åñëè Г¤Г*, Г*Г*æìèòå 'y', åñëè Г*ГҐГІ, Г*Г*æìèòå 'n'"<<endl;
    cin>>s;
    if(s=='y')
        cout<<"Г‚Г*ГёГҐ ÷èñëî: "<<i-1<<endl;
    else
    {
        i++;
        rec_func(i, n);
    }
}
int main() 
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int n, i=1;
    cout<<"Ââåäèòå Г§Г*Г*Г·ГҐГ*ГЁГҐ n:";
    cin>>n;
    rec_func(i, n); 
return 0;
 
}
1
Darky
Быдлокодер
508 / 295 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
07.12.2009, 21:05 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream.h>
#include <conio.h>
int main(void)
{
int n=0, i=1;
char usr;
cout<<"Vvedite n: ";
cin>>n;
cout<<"DA - 'y', NO - 'n'"<<endl;
    for (i=0;;i++)
    {
      cout<<"Vashe chislo bolshe "<<i<<" ?"<<endl;
      cin>>usr;
      if (usr=='n')
      {
      cout<<"Vashe chislo: "<<i-1<<endl;
      getch();
      break;
      }
    }
}
Попроще
1
Shevva
17 / 17 / 0
Регистрация: 13.09.2009
Сообщений: 140
07.12.2009, 21:10  [ТС] #6
ОГРОМНОЕ СПАСИБО за задачу, но у меня есть ещё одна очень маленькая просьба, можно подключить какой нибудь другой модуль, а то у меня не читает шрифты, то есть, когда запускаю прогу, она выдаёт белиберду, может посоветуете что-то. У меня DEV

Добавлено через 4 минуты
Вопрос снимается, ещё раз всем огромное спасибо парни.
0
sh4d°_°ff
ex-close383
1256 / 280 / 19
Регистрация: 31.10.2009
Сообщений: 1,430
07.12.2009, 21:11 #7
Русские шрифты в консоли
это читал?
1
valeriikozlov
Эксперт С++
4682 / 2508 / 322
Регистрация: 18.08.2009
Сообщений: 4,550
07.12.2009, 21:12 #8
Shevva,
Русские шрифты в консоли Пробуйте написанные там варианты, какой-нибудь Вам точно подойдет. Кстати для этого кода там тоже описан вариант:
C++
1
2
// установить вручную шрифт Lucida Console в свойствах окна консоли 
// и запомнить это для всех окон с этим именем

Darky, Да Ваш вариант попроще, но мой сложнее из-за решения с рекурсией
1
Shevva
17 / 17 / 0
Регистрация: 13.09.2009
Сообщений: 140
07.12.2009, 21:23  [ТС] #9
valeriikozlov, В Вашей программе небольшая ошибка, когда нажимаешь да(y), то вылетаешь из программы.
0
valeriikozlov
Эксперт С++
4682 / 2508 / 322
Регистрация: 18.08.2009
Сообщений: 4,550
07.12.2009, 21:25 #10
Shevva, забыл предупредить. Перед нажатием переключитесь на английский алфавит
0
Shevva
17 / 17 / 0
Регистрация: 13.09.2009
Сообщений: 140
08.12.2009, 12:13  [ТС] #11
Я поговорил с преподом, он сказал, что прога работает некоректно, необходимо, чтобы она проверяла число по другому принципу, то есть например, если у нас n равно 4, то тогда мы делим это число на два и спрашиваем, больше ли задуманне число 2 и так дальше. Подсквжите пожлуйста, я ток нчиню осваивать этот язык.
0
breeve
75 / 75 / 14
Регистрация: 01.08.2009
Сообщений: 177
08.12.2009, 13:06 #12
писал что-то похожее, когда-то давно думаю тебе поможет..
метод ньютона:
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
36
37
38
#include<iostream>
using namespace std;
int main()
{
    int min = 0, max = 101, value = 0;
    char a;
    
    cout << "Zagadai chislo. Ot 0 do 100(+/-/=)\n";
    value = min+max/2;
    cout << value<<"?";
    while(true)
{
    cin >> a;
    switch (a)
{
    case '+':
    min = value;
    value = (min+max)/2;
    cout << value<<"?";
    break;
 
    case '-':
    max = value;
    value = (min+max)/2;
    cout << value<<"?";
    break;
 
    case '=':
    cout << "Done.\n";
    cin.get();
    cin.get();
    return 0;
 
}  
 
}
 
}

методом рандома:
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include<iostream>
#include <time.h>
#include <math.h>
#include <stdlib.h>
#include <string>
#include <cstdlib>
 
#define diff max-min
using namespace std;
 
int main()
{  
    srand(time(NULL));
    int arr[30];
    int min = 0, max = 100, value = 0, i = 0;
    char a, prev;
 
    cout << "Zagadai chislo. ot 0 do 100(+/-/=)\n";
    value = min+rand() % (max-min+1);
    arr[i] = value;
    i++;
 
    cout << value<<"?";
    while(true)
{
    cin >> a;
    switch (a)
{
    case '+':
    min = value+1;
    value = min+rand() % (max-min+1);
    arr[i] = value; 
    cout << value<<"?";
    i++;
    prev = '+';
    break;
    
    case '-':
    max = value-1;
    value = min+rand() % (max-min+1);
    arr[i] = value;
    cout << value<<"?";
    i++;
    prev = '-';
    break;
 
    case '=':
    cout << "Ugadal.\n";
    cout << "Kol-vo popytok: " << i;
    cin.get();
    cin.get();
 
    return 0;
}  
 
}
    cin.get();
    cin.get();
    return 0;
 
}
1
Shevva
17 / 17 / 0
Регистрация: 13.09.2009
Сообщений: 140
08.12.2009, 19:06  [ТС] #13
Конечно, спасибо, я Вам очень благодарен, но у меня есть ещё одна небольшая просьба, можно что-бы предпоследний вариант программы считал не от 0 до 100, а от 0 до n, а то я пробовал переделать, немного не получается
0
breeve
75 / 75 / 14
Регистрация: 01.08.2009
Сообщений: 177
08.12.2009, 19:30 #14
если ты имеешь ввиду код который кинул тебе я, то воть:
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
36
37
38
39
40
41
42
#include<iostream>
#include <time.h>
#include <math.h>
#include <stdlib.h>
#include <string>
using namespace std;
 
int main()
{
    
    int min = 0, max, value = 0;
    char a;
    cout << "Vvedite maksimalnoe znachenie\n";
    cin >> max;
    cout << "Zagadai chislo(+/-/=)\n";
    value = min+max/2;
    cout << value<<"?";
    while(true)
{
    cin >> a;
    switch (a)
{
    case '+':
    min = value;
    value = (min+max)/2;
    cout << value<<"?";
    break;
    
    case '-':
    max = value;
    value = (min+max)/2;
    cout << value<<"?";
    break;
    
    case '=':
    cout << "Done.\n";
    cin.get();
    cin.get();
    return 0;
}  
}
}
1
Shevva
17 / 17 / 0
Регистрация: 13.09.2009
Сообщений: 140
08.12.2009, 19:35  [ТС] #15
Спасибо, прям, как говорится, то что доктор прописал.
0
08.12.2009, 19:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2009, 19:35
Привет! Вот еще темы с ответами:

Игра - C++
Создать программу со структурой player. Структура должна содержать поля level - для сохранения уровня игрока (начальное значение 1), ХР -...

Игра - C++
Есть вопрос, но не знаю даже как правильно спросить. Написал логику игры &quot;Змейка&quot;. Теперь переношу на WinApi (писал на консоль). ...

Игра на С++ - C++
Ну в общем нужна вам или нет, но всё равно выложу:) Это крестики-нолики. #include &lt;graphics.h&gt; #include &lt;stdlib.h&gt; #include...

ASCII игра - C++
В жизни программиста частенько появляется желание написать свою игру, оно же появилось и у меня. Но писать захотелось что-то оригинальное и...


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

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

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