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

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

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

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

03.11.2011, 14:21. Просмотров 2838. Ответов 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
mavol
0 / 0 / 0
Регистрация: 02.11.2011
Сообщений: 9
04.11.2011, 00:45  [ТС] #16
Цитата Сообщение от SDmaN Посмотреть сообщение
Ну замени k на n. А какой смысл 1 раз? Можно чтобы постоянно генерировал какое то значение и называл. Так интереснее будет.)
Да, действительно так интересней, но у меня задача другая.
Мне нужно чтобы использовать в программе вопрос: БОЛЬШЕ или МЕНЬШЕ. И вот я это придумал пока только таким образом.

Я поменял k на n как ты и сказал, но теперь у меня начальное значение всё время 1 почему-то и не генерируется ничего другого.
0
SDmaN
54 / 51 / 2
Регистрация: 22.07.2011
Сообщений: 436
04.11.2011, 00:49 #17
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
#include <iostream>
#include <conio.h>
#include <time.h>
 
using namespace std;
 
int RandNumber(int n);
 
int main()
{
srand(time(NULL));
     int n, F;
     cout << "Zagadayte cislo ot 1 do 10\n";
     n = RandNumber(10);
 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;
}
 
 
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, 01:02  [ТС] #18
Цитата Сообщение от SDmaN Посмотреть сообщение
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
#include <iostream>
#include <conio.h>
#include <time.h>
 
using namespace std;
 
int RandNumber(int n);
 
int main()
{
srand(time(NULL));
     int n, F;
     cout << "Zagadayte cislo ot 1 do 10\n";
     n = RandNumber(10);
 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;
}
 
 
int RandNumber(int n)
{
int i;
i = rand() % n;
if(i == 0)
i = 1;
return i;
}
Не может быть такого. у меня всё прекрасно работает.
Теперь действительно работает. Просто частенько мне 1 выкидывает. Спасибо тебе большое!
0
alkagolik
Заблокирован
04.11.2011, 01:03 #19
изучайте и модифицируйте. Правда не понимаю зачем генерировать случайное число. Теоретически мы не знаем что сгенерировалось и не можем быть уверены в правильности программы.
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
#include <stdio.h>
 
size_t find(size_t num){
    size_t min = 0, max = 1000000, tmp = 0;
 
    do{
        tmp = max - (max - min) / 2;
 
        if (tmp < num)
            min = min + (max - min) / 2;
        if (tmp > num)
            max = max - (max - min) / 2;
 
    }while(tmp != num);
 
    return tmp;
}
 
int main ()
{
    size_t n;
    do{
        printf ("введите число от 1 до 1000000 включительно\n");
        scanf("%u", &n);
    }while(n > 1000000);
 
    printf("ваше число = %u\n", find(n));
 
    return 0;
}
0
mavol
0 / 0 / 0
Регистрация: 02.11.2011
Сообщений: 9
04.11.2011, 01:16  [ТС] #20
Цитата Сообщение от alkagolik Посмотреть сообщение
изучайте и модифицируйте. Правда не понимаю зачем генерировать случайное число. Теоретически мы не знаем что сгенерировалось и не можем быть уверены в правильности программы.
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
#include <stdio.h>
 
size_t find(size_t num){
    size_t min = 0, max = 1000000, tmp = 0;
 
    do{
        tmp = max - (max - min) / 2;
 
        if (tmp < num)
            min = min + (max - min) / 2;
        if (tmp > num)
            max = max - (max - min) / 2;
 
    }while(tmp != num);
 
    return tmp;
}
 
int main ()
{
    size_t n;
    do{
        printf ("введите число от 1 до 1000000 включительно\n");
        scanf("%u", &n);
    }while(n > 1000000);
 
    printf("ваше число = %u\n", find(n));
 
    return 0;
}
Не совсем ясна суть сообщения. Поясните пожалуйста.
Как я понял код ниже это какая-то интересная генерация чисел. А то, что написано над этим кодом я не совсем понял.
0
alkagolik
Заблокирован
04.11.2011, 01:29 #21
Цитата Сообщение от mavol Посмотреть сообщение
Не совсем ясна суть сообщения. Поясните пожалуйста
вы вводите с клавиатуры число, программа его "угадывает" с помошью сравнений больше\меньше.

Добавлено через 52 секунды
юзеру даже не надо отвечать "больше\меньше", программа за него все определяет.
0
SDmaN
54 / 51 / 2
Регистрация: 22.07.2011
Сообщений: 436
04.11.2011, 10:32 #22
Цитата Сообщение от alkagolik Посмотреть сообщение
вы вводите с клавиатуры число, программа его "угадывает" с помошью сравнений больше\меньше.
Добавлено через 52 секунды
юзеру даже не надо отвечать "больше\меньше", программа за него все определяет.

Не по теме:

в чем суть игры тогда?

0
alkagolik
Заблокирован
04.11.2011, 11:08 #23
Цитата Сообщение от SDmaN Посмотреть сообщение
в чем суть игры тогда?
Цитата Сообщение от mavol Посмотреть сообщение
пользователь загадывает число, компьютер пытается его отгадать. Компьютер называет свои варианты, а пользователь отвечает лишь "больше" либо "меньше".
отличие лишь в том что компьютер не задает никаких вопросов, а выводит точный результат, отвечая на эти вопросы при сравнении с введенным числом. Вообще-то суть не в игре, а в алгоритме поиска.
0
04.11.2011, 11:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2011, 11:08
Привет! Вот еще темы с ответами:

Ошибка Необработанное исключение в "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++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...


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

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

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