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

Игра - C++

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

Игра на С++ C++
C++ игра (с++)
C++ Игра на C++
игра галактика C++
Игра Жизнь C++
C++ Игра на C++
C++ Игра слов, игра Scrabble
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
07.12.2009, 20:34     Игра #2
Shevva,
Серьезная задача!
Написать программу, которая отгадывает задуманное число в интервале [0, n-1 ] за n вопросов типа "Ваше число, меньше этого?"
Именно для этого условия я опишу Вам как будут выглядеть вопросы на экране:
Ваше число меньше 1;
Ваше число меньше 2;
Ваше число меньше 3;
и т.д.
Shevva
 Аватар для Shevva
17 / 17 / 0
Регистрация: 13.09.2009
Сообщений: 140
07.12.2009, 20:41  [ТС]     Игра #3
я это понимаю, ток как сделать прогу, чтоб она выводила на экран, что ты написал((
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 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;
 
}
Darky
Быдлокодер
 Аватар для Darky
507 / 294 / 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;
      }
    }
}
Попроще
Shevva
 Аватар для Shevva
17 / 17 / 0
Регистрация: 13.09.2009
Сообщений: 140
07.12.2009, 21:10  [ТС]     Игра #6
ОГРОМНОЕ СПАСИБО за задачу, но у меня есть ещё одна очень маленькая просьба, можно подключить какой нибудь другой модуль, а то у меня не читает шрифты, то есть, когда запускаю прогу, она выдаёт белиберду, может посоветуете что-то. У меня DEV

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

Darky, Да Ваш вариант попроще, но мой сложнее из-за решения с рекурсией
Shevva
 Аватар для Shevva
17 / 17 / 0
Регистрация: 13.09.2009
Сообщений: 140
07.12.2009, 21:23  [ТС]     Игра #9
valeriikozlov, В Вашей программе небольшая ошибка, когда нажимаешь да(y), то вылетаешь из программы.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
07.12.2009, 21:25     Игра #10
Shevva, забыл предупредить. Перед нажатием переключитесь на английский алфавит
Shevva
 Аватар для Shevva
17 / 17 / 0
Регистрация: 13.09.2009
Сообщений: 140
08.12.2009, 12:13  [ТС]     Игра #11
Я поговорил с преподом, он сказал, что прога работает некоректно, необходимо, чтобы она проверяла число по другому принципу, то есть например, если у нас n равно 4, то тогда мы делим это число на два и спрашиваем, больше ли задуманне число 2 и так дальше. Подсквжите пожлуйста, я ток нчиню осваивать этот язык.
breeve
 Аватар для breeve
73 / 73 / 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;
 
}
Shevva
 Аватар для Shevva
17 / 17 / 0
Регистрация: 13.09.2009
Сообщений: 140
08.12.2009, 19:06  [ТС]     Игра #13
Конечно, спасибо, я Вам очень благодарен, но у меня есть ещё одна небольшая просьба, можно что-бы предпоследний вариант программы считал не от 0 до 100, а от 0 до n, а то я пробовал переделать, немного не получается
breeve
 Аватар для breeve
73 / 73 / 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;
}  
}
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2009, 19:35     Игра
Еще ссылки по теме:

C++ Игра
2Д-игра C++
Игра C++
Карточная игра 50 C++
C++ Игра

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

Или воспользуйтесь поиском по форуму:
Shevva
 Аватар для Shevva
17 / 17 / 0
Регистрация: 13.09.2009
Сообщений: 140
08.12.2009, 19:35  [ТС]     Игра #15
Спасибо, прям, как говорится, то что доктор прописал.
Yandex
Объявления
08.12.2009, 19:35     Игра
Ответ Создать тему
Опции темы

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