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

Программа, которая в диапазоне от 0 до 100 загадывает число, а пользователь должен его угадать - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 35, средняя оценка - 4.83
danja702
0 / 0 / 0
Регистрация: 06.10.2012
Сообщений: 19
08.10.2012, 17:46     Программа, которая в диапазоне от 0 до 100 загадывает число, а пользователь должен его угадать #1
Есть вопрос, как написать программу, в которая в дипозоне от 0 до 100 загадывает число, а мы, пользователи должны угадать число. При вводе число выводит следующие:
1. число больше вашего
2 число угадано с такой-то попытки
3. число меньше вашего

Максимальное число попыток – 10. Если число не было угадано с 10 попыток, программа выводит сообщение:
“Проигрыш! Правильный ответ такой-то”

И тоже самое, но где уже программа угадывает число с 10-ти попыток и должна угадать...

Не понимаю, как сделать это.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.10.2012, 17:46     Программа, которая в диапазоне от 0 до 100 загадывает число, а пользователь должен его угадать
Посмотрите здесь:

Программа "задумывает" число и предлагает пользователю его угадать C++
Угадать заданное число (1-100) C++
C++ Написать программу, которая выводит в консоль все числа, кратные 3 в диапазоне от 0 до 100
C++ Написать игру “Угадай число!”. Компьютер загадывает число в определенном диапазоне, а пользователь пытается его угадать
C++ программа которая проверяет находится в массиве введенное с клавиатуры число.Вивесты его на экраны
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
09.10.2012, 16:38
  #2
 Комментарий модератора 
Цитата Сообщение от danja702 Посмотреть сообщение
Очень бы не хотелось заниматься оффтопом и флудом, от того хотелось бы в ПМ поговорить или другой "вне форумный" способ.
Это не "поговорить". Это задача, которую вам необходимо решить. А из этого следует, что вам стоит создать тему отдельно по конкретной задаче, а не пытаться её решить вдали от всех. Для этого и придуман форум. Ведь решение это задачи может быть интересно не только вам.
danja702
0 / 0 / 0
Регистрация: 06.10.2012
Сообщений: 19
09.10.2012, 17:26  [ТС]     Программа, которая в диапазоне от 0 до 100 загадывает число, а пользователь должен его угадать #3
Цитата Сообщение от silent_1991 Посмотреть сообщение
Это не "поговорить". Это задача, которую вам необходимо решить. А из этого следует, что вам стоит создать тему отдельно по конкретной задаче, а не пытаться её решить вдали от всех. Для этого и придуман форум. Ведь решение это задачи может быть интересно не только вам.
Спасибо большое за правку.
По задачи так и не понялпа, что делать... максимум что умею делать в С++, это а+в складывать...
Читаю литературу, но ответа найти не могу.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
09.10.2012, 17:48     Программа, которая в диапазоне от 0 до 100 загадывает число, а пользователь должен его угадать #4
danja702, в литературе есть только общая информация, которая поможет вам решить любую задачу. А уж какие именно инструменты применить, вы и должны придумать. В этом и заключается работа программиста.
Давайте вместе подумаем. Что должна делать ваша программа? Она должна запросить у пользователя ввод числа, затем произвести какие-то проверки, и либо вывести подсказку, либо похвалить пользователя, что он умный, и выйти, либо поругать, что он тупой, и тоже выйти. При этом у пользователя есть несколько попыток, и в ответ на каждую попытку программа должна выполнить, по большому счёту, одни и те же действия (сравнение, вывод, выход или ожидание повтора попытки). Значит, вам понадобится цикл. ОК, один пункт, о котором стоит почитать, отметили - это циклы. Дальше. Мы видим, что в рамках одного потока действий (проверка и ответ программы на эту проверку) путь программы разветвляется - либо она выдаёт пользователю подсказку, либо говорит "Правильно" и выходит, либо говорит "слишком много попыток" и выходит. Значит, вам нужно познать условные операторы. Второй пункт - "условные операторы". Также программа производит ввод числа и вывод подсказок. Читаем про ввод/вывод.
По такому принципу работают все программисты, всего знать невозможно, почти с каждой новой задачей приходится разбираться в новой технологии, читать, читать и читать. Только у профессиональных программистов задачи куда крупнее, и читают они не про стандартные конструкции языков (правда, плохие программисты и про них иногда почитывают ).

Ну, это всё относится к первой задаче. Во второй задаче вам нужно почитать про бинарный поиск и подумать, как его можно применить к угадыванию. Скажу только, что любое число из диапазона 0~100 можно угадать за 7 попыток.
FliXis
31 / 31 / 2
Регистрация: 17.09.2012
Сообщений: 161
09.10.2012, 17:50     Программа, которая в диапазоне от 0 до 100 загадывает число, а пользователь должен его угадать #5
Делал недавно для 0-1000. Этот код для 0-100. Проигрыш сейчас допилю. Это для первой задачи. Вторую я не знаю.

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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <time.h>
 
using namespace std;
 
int main ()
{
    setlocale(LC_ALL,"Russian"); 
 
    srand ( time(NULL) );
    int num=rand() % 100;
 
    int j=0;
    int num2=0;
    while( num2 != num )
    {
        ++j;
        cout << "Введите число: ";
        cin >> num2;
        if( num < num2)
            cout << "Слишком большое число!" << endl;
        else if( num > num2)
            cout << "Слишком маленькое число!" << endl;
    }
    cout << endl << "Вы угадали число! c " << j << " попыток!" << endl;
 
 system ("pause");
 return 0;
}
silent_1991
09.10.2012, 17:54
  #6

Не по теме:

FliXis, ну вот, а я хотел, чтобы девушка подумала...

FliXis
31 / 31 / 2
Регистрация: 17.09.2012
Сообщений: 161
09.10.2012, 18:01     Программа, которая в диапазоне от 0 до 100 загадывает число, а пользователь должен его угадать #7
Цитата Сообщение от silent_1991 Посмотреть сообщение

Не по теме:

FliXis, ну вот, а я хотел, чтобы девушка подумала...

Сорри, я сперва даже не прочитал тему целиком, кода не увидел и решил запостить. =)
Учитывая, что
максимум что умею делать в С++, это а+в складывать...
девушке надо даже не сколько подумать, сколько прочитать хотя бы четверть-треть любой книжки. =)
danja702
0 / 0 / 0
Регистрация: 06.10.2012
Сообщений: 19
09.10.2012, 18:04  [ТС]     Программа, которая в диапазоне от 0 до 100 загадывает число, а пользователь должен его угадать #8
Цитата Сообщение от FliXis Посмотреть сообщение
Учитывая, что девушке надо даже не сколько подумать, сколько прочитать хотя бы четверть-треть любой книжки. =)
Ну уж сорри, когда маленький ребенок, не так уж много времени.
А книги читаю, предрочитая фентези, но какое это отношение к вопросу имеет?

Но тем не менее, ОГРОМНЕЙШЕЕ спасибо!
Буду теперь разбирать по кусочкам и стараться понять
FliXis
31 / 31 / 2
Регистрация: 17.09.2012
Сообщений: 161
09.10.2012, 19:35     Программа, которая в диапазоне от 0 до 100 загадывает число, а пользователь должен его угадать #9
Цитата Сообщение от danja702 Посмотреть сообщение
А книги читаю, предрочитая фентези, но какое это отношение к вопросу имеет?
Любой книжки по с++ имелось ввиду =)

Добавлено через 1 час 29 минут
1)
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 "stdafx.h"
#include <iostream>
#include <conio.h>
#include <time.h>
 
using namespace std;
 
int main ()
{
    setlocale(LC_ALL,"Russian"); 
 
    srand ( time(NULL) );
    int num=rand() % 100;
 
    char ch=' ';
    int num2=0;
 
    do
    {
        for( int j=0 ; j<10 ; ++j )
        {
            cout << "Введите число: ";
            cin >> num2;
 
            if( num < num2)
                cout << "Слишком большое число!" << endl;
            if( num > num2)
                cout << "Слишком маленькое число!" << endl;
            if( j == 9)
                {cout << endl << "Вы не смогли отгадать число " << num << " c 10ти попыток!" << endl; break;}
            if( num2 == num )
                {cout << endl << "Вы угадали число! c " << j+1 << " попыток!" << endl; break;}
        }
 
    cout << "Еще раз? (y/n):_\b";
    cin >> ch; cout << endl;
    }
    while( ch != 'n' );
    
 system ("pause");
 return 0;
}
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
09.10.2012, 19:43     Программа, которая в диапазоне от 0 до 100 загадывает число, а пользователь должен его угадать #10
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 <iostrem.h>
#include <time.h>
double abs(double x)
{
 if (x<0.0)
 {
   return -x;
 }
 return x;
}
int mian ()
{
 double x, v;
 randomize(time());
 x=rnd%100+((double)(rnd%1001)/1000.0;
 do
 {
  cin>>v;
  if ((v-x)>=0.001)
  {
   cout<<endl<<"Загаданное число меньше."<<endl;
  }
  if ((v-x)<=0.001)
  {
   cout<<endl<<"Загаданное число больше."<<endl;
  }
 } while (abs(x-v)>0.001);
 cout<<"Да, я загадал "<<x<<"."<<endl;
 return 0;
}
FliXis
31 / 31 / 2
Регистрация: 17.09.2012
Сообщений: 161
09.10.2012, 20:15     Программа, которая в диапазоне от 0 до 100 загадывает число, а пользователь должен его угадать #11
1) Переделал немного. Как сделать вторую уже понял вроде.
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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <time.h>
 
using namespace std;
 
int main ()
{
    setlocale(LC_ALL,"Russian"); 
 
    srand ( time(NULL) );
    int num=rand() % 100;
 
    char ch=' ';
    int num2=0;
    int j=0;
 
    do
    {
        while(j<10)
        {
            cout << "Введите число: ";
            cin >> num2;
            j++;
            if( num < num2)
                cout << "Слишком большое число!" << endl;
            if( num > num2)
                cout << "Слишком маленькое число!" << endl;
            if( j == 10)
                {cout << endl << "Вы не смогли отгадать число " << num << " c 10ти попыток!" << endl; break;}
            if( num2 == num )
                {cout << endl << "Вы угадали число! c " << j << " попыток!" << endl; break;}
        }
 
    cout << "Еще раз? (y/n):_\b";
    cin >> ch; cout << endl; j=0;
    }
    while( ch != 'n' );
    
 system ("pause");
 return 0;
}
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
10.10.2012, 20:00     Программа, которая в диапазоне от 0 до 100 загадывает число, а пользователь должен его угадать #12
Цитата Сообщение от taras atavin Посмотреть сообщение
if ((v-x)<=0.001)
Должно быть if ((v-x)<=-0.001)
danja702
0 / 0 / 0
Регистрация: 06.10.2012
Сообщений: 19
11.10.2012, 12:06  [ТС]     Программа, которая в диапазоне от 0 до 100 загадывает число, а пользователь должен его угадать #13
Больше спасибо за ответ.
Кажется, разобралась!

Только не понимаю зачем нужно #include "stdafx.h"
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
11.10.2012, 12:17     Программа, которая в диапазоне от 0 до 100 загадывает число, а пользователь должен его угадать #14
Я без него обошёлся.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
11.10.2012, 12:53     Программа, которая в диапазоне от 0 до 100 загадывает число, а пользователь должен его угадать #15
Цитата Сообщение от danja702 Посмотреть сообщение
Только не понимаю зачем нужно #include "stdafx.h"
Не нужен он. Это фишка исключительно Microsoft Visual Studio, можете о ней не беспокоиться и просто исключить из кода.
danja702
0 / 0 / 0
Регистрация: 06.10.2012
Сообщений: 19
11.10.2012, 13:04  [ТС]     Программа, которая в диапазоне от 0 до 100 загадывает число, а пользователь должен его угадать #16
Цитата Сообщение от silent_1991 Посмотреть сообщение
Не нужен он. Это фишка исключительно Microsoft Visual Studio, можете о ней не беспокоиться и просто исключить из кода.
Хорошо, спасибо.
Просто я в Dev'e пытаюсь работать и он не воспринимает некоторые вещи
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
11.10.2012, 13:08     Программа, которая в диапазоне от 0 до 100 загадывает число, а пользователь должен его угадать #17
danja702, там по умолчанию используется компилятор mingw (правда, его довольно-таки древняя версия, но всё же), поэтому он будет воспринимать почти всё, что указано в стандарте языка С++ 2003 года. От себя советовал бы обратить внимание на Code::Blocks. С установкой никаких проблем, компилятор встроен, тоже mingw, но версия куда новее.
danja702
0 / 0 / 0
Регистрация: 06.10.2012
Сообщений: 19
13.10.2012, 21:48  [ТС]     Программа, которая в диапазоне от 0 до 100 загадывает число, а пользователь должен его угадать #18
Есть код, но он не компилириуется:

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
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main ()
 
float f( float x )
{;
cout << (int)x << endl; // (int) - eka?cn ?cnei ioaan oaeia
while (true)
{
count << "Pravilno (+/-/=)?";
char c;
cin >> c;
switch (c)
{
case '+'; return +1;
case '-'; return -1;
case '='; return 0;
}
cout << "Vi oshiblis'! Ne pravilnij simvol - povtorite!";
cout << endl;
}
flot n(float x1, float x2)
{
float x = (x1 +x2) / 2;
float y = f(x)
while (abs(y) > 0.001)
{
if (y > 0)
x1 = x;
esle 
x2 = x
x = (x1 * x2) / 2;
y = f(x);
}
return x;
}
 
int main()
{
cout << "Vi zagodali: " << (int)n(0, 100);
}
Исправляя мелкие ошибки, такие как знаки точки с запятой или скобки, появляются еще дюжена ошибок.
Что надо сделать, что код скомпилировался и программа заработала корректно? (игра-программа для угадывания моего числа)
Использую Dev-C++ .
Жду ответа.
MastAKK
 Аватар для MastAKK
144 / 135 / 12
Регистрация: 13.10.2012
Сообщений: 586
Записей в блоге: 1
13.10.2012, 23:11     Программа, которая в диапазоне от 0 до 100 загадывает число, а пользователь должен его угадать #19
C++ (Qt)
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 <stdlib.h>
#include <conio.h>
#include <time.h>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian" );
    srand (time(NULL));
    int b=0;
    int sec_num = rand()%100;
    int a;
    do{
        b++;
        cout << "Попробуй угадай секретик\n";
        cin >> a;
        cout << '\n';
        if(a==sec_num){
                cout << "И это правильный ответ!";
                cout << "Вы потратили " << b << " попыток(ки/ку)\n\n\n\n\n\n\nНажмите любую кнопку чтобы выйти!";
                getch();
                return 0;
            }
        if(a>sec_num){
            cout << "Меньше! ";
        }
        if(a<sec_num){
            cout << "Больше! ";
        }
    }while(b!=10);
    cout << "Вы потратили 10 попыток и не угадали! Попробуйте ещё!\n\n\n\n\n\n";
    cout << "На самом деле число: " << sec_num << "\n\n\n\n\n\nНажмите любую кнопку чтобы выйти!";
    getch();
    return 0;
}
У меня вот так вот получилось... Мне кажется, что всё правильно работает и это проще вышеуказанных вариантов (использовал только цикл и массив)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.10.2012, 23:46     Программа, которая в диапазоне от 0 до 100 загадывает число, а пользователь должен его угадать
Еще ссылки по теме:

Пользователь должен отгадать рандомное число C++
C++ Программа задумывает число в диапазоне от 1 до 10 и предлагает пользователю угадать его за 5 попыток
Где должен находиться файл, чтоб программа его открыла, или как указывать его имя? C++

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

Или воспользуйтесь поиском по форуму:
danja702
0 / 0 / 0
Регистрация: 06.10.2012
Сообщений: 19
13.10.2012, 23:46  [ТС]     Программа, которая в диапазоне от 0 до 100 загадывает число, а пользователь должен его угадать #20
Ne, nuzno chtobi programma ugadala moe chislo!

Добавлено через 7 минут
Oshibki pri kode:


expected init-declarator before "float"
expected `,' or `;' before "float"
Yandex
Объявления
13.10.2012, 23:46     Программа, которая в диапазоне от 0 до 100 загадывает число, а пользователь должен его угадать
Ответ Создать тему
Опции темы

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