Улучшение проги, угадывающей число
18.12.2014, 23:43. Показов 438. Ответов 0
Помогите улучшить код программы для предотвращения появления ошибок(предупреждений, кстати, с чем связано их появление?) и возможно и саму логику, тк я не до конца понимаю почему оно мне выдает не всегда то что надо.
Суть программы, мы загадываем число, а прога по нашим подсказкам пытается угадать это число. Визуал С++ 2008
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
62
63
| #include <iostream>
#include <string>
#include "math.h"
#include <ctime>
using namespace std;
void nachalo();
void resh1(int& Min, int& Max, int a, int& c);
void resh2(int& Min, int& Max, int a, char& k, int& c);
void main()
{
setlocale(0, "");
cout<<"Загадайте число от [0-100], а я попробую его отгадать. \n Вы должны давать мне подсказки: если мое число больше, то >, \n если меньше, то < и =, если отгадал. \n Следите за правильностью подсказок. \n Готовы? \n Загадывайте!"<<endl;
system("pause");
nachalo();
}
void nachalo()
{
int a, Min, Max, c=0;
Min=100;
Max=0;
resh1(Min, Max, a, c);
}
void resh1(int& Min, int& Max, int a, int& c)
{
char k;
srand( time(0) );
a=rand()% Min +Max;
cout<<a<<endl;
cin>>k;
resh2(Min, Max, a, k, c);
system("pause");
}
void resh2(int& Min, int& Max, int a, char& k, int& c)
{
c++;
if (k=='>'){
Min=a-Max;
resh1(Min, Max, a, c);
}
if (k=='<'){
Max=a;
Min=Min-Max;
resh1(Min, Max, a, c);
}
if (k=='='){
cout<<"Ураа, я угадал с попытки №"<<c<<endl;
}
else
cout<<"Ошибка ввода знака!!!";
c--;
resh2(Min, Max, a, k, c);
} |
|
Пожалуйста, выложите готовый код=)
Добавлено через 1 час 9 минут
Помогите, ну сжальтесь=)
Добавлено через 16 минут
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
62
63
64
| #include <iostream>
#include <string>
#include "math.h"
#include <ctime>
using namespace std;
void nachalo();
void resh1(int& Min, int& Max, int& c);
void resh2(int& Min, int& Max, int a, char& k, int& c);
void main()
{
setlocale(0, "");
cout<<"Загадайте число от [0-100], а я попробую его отгадать. \n Вы должны давать мне подсказки: если мое число больше, то >, \n если меньше, то < и =, если отгадал. \n Следите за правильностью подсказок. \n Готовы? \n Загадывайте!"<<endl;
system("pause");
nachalo();
}
void nachalo()
{
int Min, Max, c=0;
Min=100;
Max=0;
resh1(Min, Max, c);
}
void resh1(int& Min, int& Max, int& c)
{
char k;
srand( time(0) );
int a;
a=rand()% Min +Max;
cout<<a<<endl;
cin>>k;
resh2(Min, Max, a, k, c);
system("pause");
}
void resh2(int& Min, int& Max, int a, char& k, int& c)
{
c++;
if (k=='>'){
Min=a-Max;
resh1(Min, Max, c);
}
if (k=='<'){
Max=a;
Min=Min-Max;
resh1(Min, Max, c);
}
if (k=='='){
cout<<"Ураа, я угадал с попытки №"<<c<<endl;
}
else
cout<<"Ошибка ввода знака!!!";
c--;
resh2(Min, Max, a, k, c);
} |
|
Вот уже исправленный код на визуал студио 2012(да, теперь уже 2012), избавился от предупреждений и вроде бы логика начала работать правильно(хотя если что проверьте). Но все еще остались баги(не знаю как решить). При вводе направильного знака или победы проги бесконечно выводится сообщение. Помогите решить.
0
|