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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.65
mavol
0 / 0 / 0
Регистрация: 02.11.2011
Сообщений: 9
#1

Игра "угадайка" с использованием do while. Ошибка. - C++

03.11.2011, 14:21. Просмотров 2700. Ответов 22
Метки нет (Все метки)

Собственно задача:

Написать программу, играющую с пользователем в "угадайку" - пользователь загадывает число, компьютер пытается его отгадать. Компьютер называет свои варианты, а пользователь отвечает лишь "больше" либо "меньше".


Вот прога:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{  int F;
     int n;
     cout << "Zagadayte cislo ot 1 do 10";
 do {
     int F;
     cout << "Eto chislo" << n << "?";
     cout << "1 esli rovno, 2 esli bolse: >";
     cin  >> F;
        if(F==1) 
        cout << "Ugadal";
        else
        n=n+2;
        while (F==1){ 
        cout << "Ugadal";
        }
 }
getch();
 return 0;
}
Ругается на "n" и getch(), а так же не могу понять как сделать с "меньше".

Добавлено через 3 минуты
Я новичек, так что не ругайтесь пожалуйста.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.11.2011, 14:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Игра "угадайка" с использованием do while. Ошибка. (C++):

Игра "Угадайка" - C++
Привет! Код игры &quot;Угадайка&quot; из книги по изучению C++ через программирование игр. Я сделал код цикличным, чтобы программа предлагала...

Игра "Угадайка – 4" - C++
Игра &quot;Угадайка – 4&quot;. Некто задумал целое число в интервале от 0 до 3. Нужно угадать это число, задавая вопросы. На эти вопросы Некто...

Текстовая игра "Кто хочет стать миллионером?" с использованием классов - C++
Нужно создать игру кто хочет стать миллионером. С 2 подсказками 50 на 50 и помощью зала.

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

Карточная игра "Дурак" - Ошибка загрузки dll карт - C++
Есть проект (вроде должен работать). Запуская в Visual Studio 2010 получаю ошибку &quot;Ошибка загрузки dll карт&quot;. Самому исправить не...

Консольная "графика", игра "Тетрис". Фигуры перестают прорисовываться на определенном этапе - C++
Доброго времени! Написал на днях тетрис (в консоле) с использованием, кажется это называется WinApi. В цикле вызывается функция...

22
edward_jonson
158 / 158 / 25
Регистрация: 23.02.2011
Сообщений: 392
03.11.2011, 14:32 #2
n не инициализировано
0
zuq
95 / 95 / 2
Регистрация: 10.04.2011
Сообщений: 256
03.11.2011, 14:32 #3
А где while?(Тот который с do)
0
mavol
0 / 0 / 0
Регистрация: 02.11.2011
Сообщений: 9
03.11.2011, 14:40  [ТС] #4
Цитата Сообщение от edward_jonson Посмотреть сообщение
n не инициализировано
на 6-й строке инициализировал.

даже если вставляю его в цикл do, всё равно ругается.

Добавлено через 22 секунды
Цитата Сообщение от zuq Посмотреть сообщение
А где while?(Тот который с do)
на 17-й строке.
0
soon
2541 / 1306 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
03.11.2011, 14:41 #5
Ок, тогда где закрывающая фигурная перед ним?
0
zuq
95 / 95 / 2
Регистрация: 10.04.2011
Сообщений: 256
03.11.2011, 14:42 #6
Цитата Сообщение от mavol Посмотреть сообщение
на 17-й строке.
Ты считаешь, что этот while как-то относиться к do?
0
soon
2541 / 1306 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
03.11.2011, 14:42 #7
Вы не инициализировали, вы объявили. Присвойте n ноль
0
mavol
0 / 0 / 0
Регистрация: 02.11.2011
Сообщений: 9
03.11.2011, 14:48  [ТС] #8
Цитата Сообщение от zuq Посмотреть сообщение
Ты считаешь, что этот while как-то относиться к do?
Поправил.


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <conio.h>
using namespace std;
 
int main()
{ 
     int n=0;
     cout << "Zagadayte cislo ot 1 do 10";
 do {
     int F;
     cout << "Eto chislo" << n << "?";
     cout << "Vvedite 1 esli rovno, 2 esli bolse: >";
     cin  >> F;
        if(F==1) 
        cout << "Ugadal";
        else
        n=n+2;
        }
        while (F==2)
 getch();
 return 0;
}
n инициализировал.
Теперь ругается на F:
`F' was not declared in this scope
И на getch:
expected `;' before "getch"
0
zuq
95 / 95 / 2
Регистрация: 10.04.2011
Сообщений: 256
03.11.2011, 14:54 #9
Вот так должно работать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <conio.h>
using namespace std;
 
int main()
{
     int n(0), F;
     cout << "Zagadayte cislo ot 1 do 10\n";
 do {
         cout << "Eto chislo" << n << "?\n";
         cout << "Vvedite 1 esli rovno, 2 esli bolse: >";
         cin  >> F;
         if(F == 1) {cout << "Ugadal"; break; }
         else n=n+2;
        }while (F != 1);
 getch();
 return 0;
}
1
mavol
0 / 0 / 0
Регистрация: 02.11.2011
Сообщений: 9
04.11.2011, 00:10  [ТС] #10
Вот рабочий вариант. Помогите пару изменений внести пожалуйста.

1. Нужно, чтобы за пределы 10 увеличить нельзя было и выводилось сообщение:
Вводить больше 10 нельзя. А так же чтобы он не увеличивал переменную n в таком случае.

2. Чтобы числа рандомно генерировались от 1 до 10 изначально.


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <conio.h>
using namespace std;
 
int main()
{
     int n(0), F;
     cout << "Zagadayte cislo ot 1 do 10\n";
 do {
         cout << "Eto chislo: " << n << "?\n";
         cout << "Vvedite 1 esli rovno, 2 esli bolse, 3 esli menshe: >";
         cin  >> F;
         if(F == 1) {cout << "Ugadal"; break; }
         else if (F == 2) {n=n+2;}
         else if (F == 3) {n=n-1;}
        }
        while (F != 1);
 getch();
 return 0;
}
0
SDmaN
54 / 51 / 2
Регистрация: 22.07.2011
Сообщений: 436
04.11.2011, 00:17 #11
Цитата Сообщение от mavol Посмотреть сообщение
2. Чтобы числа рандомно генерировались от 1 до 10 изначально.
можно такую функцию сделать:
C++
1
2
3
4
5
6
7
8
int RandNumber(int n)
{
int i;
i = rand() % n;
if(i == 0)
i = 1;
return i;
}
только надо будет подключить time.h и в начале main() добавить:
C++
1
srand(time(NULL));
в функцию передавать 10.
1
mavol
0 / 0 / 0
Регистрация: 02.11.2011
Сообщений: 9
04.11.2011, 00:26  [ТС] #12
Цитата Сообщение от SDmaN Посмотреть сообщение
можно такую функцию сделать:
C++
1
2
3
4
5
6
7
8
int RandNumber(int n)
{
int i;
i = rand() % n;
if(i == 0)
i = 1;
return i;
}
только надо будет подключить time.h и в начале main() добавить:
C++
1
srand(time(NULL));
в функцию передавать 10.

C++
1
2
3
4
5
6
7
8
int RandNumber(int n)
{
int i;
i = rand() % n;
if(i == 0)
i = 1;
return i;
}
этот код нужно вставить перед do?
0
SDmaN
54 / 51 / 2
Регистрация: 22.07.2011
Сообщений: 436
04.11.2011, 00:32 #13
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
#include <iostream>
#include <conio.h>
#include <time.h>
 
using namespace std;
 
int RandNumber(int n);
 
int main()
{
srand(time(NULL));
     int n(0), F;
     int k;
     cout << "Zagadayte cislo ot 1 do 10\n";
 do {
     k = RandNumber(10); // теперь в k содержится число от 1 до 10
         cout << "Eto chislo: " << n << "?\n";
         cout << "Vvedite 1 esli rovno, 2 esli bolse, 3 esli menshe: >";
         cin  >> F;
         if(F == 1) {cout << "Ugadal"; break; }
         else if (F == 2) {n=n+2;}
         else if (F == 3) {n=n-1;}
        }
        while (F != 1);
 getch();
 return 0;
}
 
 
int RandNumber(int n)
{
int i;
i = rand() % n;
if(i == 0)
i = 1;
return i;
}
1
mavol
0 / 0 / 0
Регистрация: 02.11.2011
Сообщений: 9
04.11.2011, 00:37  [ТС] #14
Мне надо чтобы "n" изначально сгенерировалось от 1 до 10 и всё.
0
SDmaN
54 / 51 / 2
Регистрация: 22.07.2011
Сообщений: 436
04.11.2011, 00:40 #15
Цитата Сообщение от mavol Посмотреть сообщение
Мне надо чтобы "n" изначально сгенерировалось от 1 до 10 и всё.
Ну замени k на n. А какой смысл 1 раз? Можно чтобы постоянно генерировал какое то значение и называл. Так интереснее будет.)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2011, 00:40
Привет! Вот еще темы с ответами:

Ошибка Необработанное исключение в "0x001d18f8" в "lr7v2.exe": 0xC0000005: Нарушение прав доступа при чтении "0xcdcdcde9" - C++
class Hdd { public: char Hdd_name; int total_space; int free_space; int speed; Hdd *next; Hdd *previous; };

Ошибка при сборке многофайлового проекта: "невозможно преобразовать "int" в "const golf" - C++
Сделал многофайловую программу программу, вот она: //golf.h #include &lt;iostream&gt; #ifndef golg_h_ #define golf_h_ const int Len =...

Где ошибка невозможно преобразовать указатель "this" из "const pers" в "pers &" при выводе объектов через cout - C++
Добрый день! Переписал код из книг Лафоре, создание мультимножества из собственных объектов- справочник телефонный, с именем и фамилией. ...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
04.11.2011, 00:40
Ответ Создать тему
Опции темы

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