Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.56/27: Рейтинг темы: голосов - 27, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 02.11.2011
Сообщений: 9

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

03.11.2011, 14:21. Показов 5863. Ответов 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
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.11.2011, 14:21
Ответы с готовыми решениями:

Игра угадайка
Здравствуйте! В общем нужно написать программу, моделирующую игру «Угадайка». Компьютер случайным образом загадывает число от 1 до 100....

Игра угадайка
Ребят, помогите написать прогу на си, плиииз Компьютер случайным образом извлекает из подготовленного файла слово и распечатывает на...

Игра угадайка
При запуске программа загадывает число от 1 до 99 (включительно) и дает пользователю 10 попыток отгадать. Далее пользователь начинает...

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

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

Добавлено через 22 секунды
Цитата Сообщение от zuq Посмотреть сообщение
А где while?(Тот который с do)
на 17-й строке.
0
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
03.11.2011, 14:41
Ок, тогда где закрывающая фигурная перед ним?
0
 Аватар для zuq
95 / 95 / 5
Регистрация: 10.04.2011
Сообщений: 256
03.11.2011, 14:42
Цитата Сообщение от mavol Посмотреть сообщение
на 17-й строке.
Ты считаешь, что этот while как-то относиться к do?
0
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
03.11.2011, 14:42
Вы не инициализировали, вы объявили. Присвойте n ноль
0
0 / 0 / 0
Регистрация: 02.11.2011
Сообщений: 9
03.11.2011, 14:48  [ТС]
Цитата Сообщение от 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 / 5
Регистрация: 10.04.2011
Сообщений: 256
03.11.2011, 14:54
Вот так должно работать
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
0 / 0 / 0
Регистрация: 02.11.2011
Сообщений: 9
04.11.2011, 00: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
60 / 57 / 8
Регистрация: 22.07.2011
Сообщений: 436
04.11.2011, 00:17
Цитата Сообщение от 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
0 / 0 / 0
Регистрация: 02.11.2011
Сообщений: 9
04.11.2011, 00:26  [ТС]
Цитата Сообщение от 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
60 / 57 / 8
Регистрация: 22.07.2011
Сообщений: 436
04.11.2011, 00:32
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
0 / 0 / 0
Регистрация: 02.11.2011
Сообщений: 9
04.11.2011, 00:37  [ТС]
Мне надо чтобы "n" изначально сгенерировалось от 1 до 10 и всё.
0
60 / 57 / 8
Регистрация: 22.07.2011
Сообщений: 436
04.11.2011, 00:40
Цитата Сообщение от mavol Посмотреть сообщение
Мне надо чтобы "n" изначально сгенерировалось от 1 до 10 и всё.
Ну замени k на n. А какой смысл 1 раз? Можно чтобы постоянно генерировал какое то значение и называл. Так интереснее будет.)
0
0 / 0 / 0
Регистрация: 02.11.2011
Сообщений: 9
04.11.2011, 00:45  [ТС]
Цитата Сообщение от SDmaN Посмотреть сообщение
Ну замени k на n. А какой смысл 1 раз? Можно чтобы постоянно генерировал какое то значение и называл. Так интереснее будет.)
Да, действительно так интересней, но у меня задача другая.
Мне нужно чтобы использовать в программе вопрос: БОЛЬШЕ или МЕНЬШЕ. И вот я это придумал пока только таким образом.

Я поменял k на n как ты и сказал, но теперь у меня начальное значение всё время 1 почему-то и не генерируется ничего другого.
0
60 / 57 / 8
Регистрация: 22.07.2011
Сообщений: 436
04.11.2011, 00:49
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 / 0 / 0
Регистрация: 02.11.2011
Сообщений: 9
04.11.2011, 01:02  [ТС]
Цитата Сообщение от 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
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
04.11.2011, 01:03
изучайте и модифицируйте. Правда не понимаю зачем генерировать случайное число. Теоретически мы не знаем что сгенерировалось и не можем быть уверены в правильности программы.
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
0 / 0 / 0
Регистрация: 02.11.2011
Сообщений: 9
04.11.2011, 01:16  [ТС]
Цитата Сообщение от 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.11.2011, 01:16
Помогаю со студенческими работами здесь

Игра Угадайка
Помогите, пожалуйста, разобраться...только недавно начал изучать Java. и появились проблемы в синтаксисе что то компилятор ругается на char...

Игра угадайка!
#!usr/bin/perl -w $im_thinking_of=int(rand 10); print &quot;Введите число от 0 до 9:&quot;; $guess=&lt;STDIN&gt;; chomp $guess; if...

Игра угадайка.
Добрый день. Код: &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;meta charset= &quot;utf-8&quot;&gt; &lt;title&gt;Отгадай-ка&lt;/title&gt; &lt;/head&gt; ...

Игра угадайка с компьютером
Здравствуйте, нужно написать игру с такими условиями :Это игра, в которую может играть 1 игрок с компьютером, в начале предлагает ввести...

игра угадайка. как настроить кнопку?
Необходимо, чтобы по клику кнопки &quot;Еще слово&quot; добавлялось только 1 слово (записывалось в Label), но у меня получается, чтобы все сразу либо...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru