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

Угадай целое число ( с возможностью сравнения с числом с плавающей точка )

30.11.2019, 21:08. Показов 2282. Ответов 8

Студворк — интернет-сервис помощи студентам
Здравствуйте , столкнулся с проблемой сравнение введенного пользователем числа и сгенерированного . Проблема заключается в том , что при вводе числа с точкой , запятой компелятор не может это адекватно сравнивать. Можно ли как-то сравнить эти 2 числа или поставить ограничение на ввод чисел с точкой ?
[CPPQT]
[CPPQT]
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
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
65
66
67
68
#include <iostream>
#include <time.h>
using namespace std;
 
void riddle(void);
 
 
int main()
{
    setlocale(LC_ALL, "Russian");
    char choice = 'y';
 
    srand(time(NULL));
    riddle();
    while (choice == 'y')
    {
        cout << endl << "Хотите угадать еще раз?(y-да \n) ";
        cin >> choice;
        cout << endl;
        if (choice != 'y')
            break;
        riddle();
    }
 
    system("pause");
    return 0;
}
 
 
void riddle()
{
    int i = 0, n = 0, x = 0, y = 1;
     double y = 1;
    x = rand() % 20;
    
    cout << "Мое число между 0 и 20. (Загаданное число , не дробное )" << endl << "Вы cможете его отгадать?" << endl;
 
    do {
        cout << "Напечатайте Вашу догадку: ";
        n = scanf_s("%d", &y);
        while (getchar() != '\n');
        i++;
        
        
        if (n == 1) {
 
            if (y == x)
                break;
 
            if (y > x)
                cout << "Слишком много. Попробуйте еще раз." << endl << x << endl;
 
            else
                cout << "Слишком мало. Попробуйте еще раз." << endl << x << endl;
 
        }
 
        else
            cout << "Вы ввели символ , а не число " << endl;
    } while (y != x);
 
    if (i < 10)
        cout << "Угадали! Вы счастливчик!" << endl;
    if (i == 10)
        cout << "Угадали! Ага! Вы знаете секрет!" << endl;
    if (i > 10)
        cout << "Угадали! Вам нужно развивать свои способности." << endl;
}
Добавлено через 1 час 50 минут
Я забыл убрать элемент
Цитата Сообщение от Pilihrim Посмотреть сообщение
double y = 1;
Вообщем я пробовал и даб и флоат , бестолку
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.11.2019, 21:08
Ответы с готовыми решениями:

Дано целое число N (> 1), являющееся числом Фибоначчи: N = FK . Найти целое число K — порядковый номер числа Фибоначчи N
помогите пожалуйста на с написать, или хотя бы какой нить толчок сделать. Дано целое число N (&gt; 1), являющееся числом Фибоначчи: N = FK...

Реализовать игру «Угадай целое число».
Помогите написать программу. Правила игры следующие. Один из партнеров вводит задуманное число, а второй угадывает это число, причем...

Дана строка S, изображающая вещественное число в формате с плавающей точкой, и целое число N (N>0)
2. Дана строка S, изображающая вещественное число в формате с плавающей точкой, и целое число N (N&gt;0). Вывести набор символов,...

8
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
01.12.2019, 04:03
Цитата Сообщение от Pilihrim Посмотреть сообщение
Угадай целое число
Цитата Сообщение от Pilihrim Посмотреть сообщение
Проблема заключается в том , что при вводе числа с точкой
не совсем понятно, если Вам нужно угадать целое число, зачем Вы вводите дробное ? приведите примеры, что у Вас не срабатывает
0
0 / 0 / 0
Регистрация: 15.01.2019
Сообщений: 9
01.12.2019, 16:07  [ТС]
При вводе к примеру 8.1 ( а программа загадала 8 ) юзер выигрывает , хотя должно написать ваше число больше чем загадано .
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
01.12.2019, 16:23
%d %f
scanf_s("%d", &y); std::cin>>y.
0
0 / 0 / 0
Регистрация: 15.01.2019
Сообщений: 9
01.12.2019, 16:35  [ТС]
Это для проверки на символы , ибо их тоже вводить нельзя .
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
01.12.2019, 16:56
Лучший ответ Сообщение было отмечено Pilihrim как решение

Решение

Цитата Сообщение от Pilihrim Посмотреть сообщение
Это для проверки на символы , ибо их тоже вводить нельзя .
Это не так делается.
C++
1
2
3
4
5
6
7
8
    int n;
    while(!(std::cin>>n))
    {
        std::cin.clear();
        std::cin.ignore(100500,'\n');
        std::cout<<"Начинай сначала"<<std::endl;
    }
    std::cout<<n<<std::endl;
1
0 / 0 / 0
Регистрация: 15.01.2019
Сообщений: 9
03.12.2019, 17:21  [ТС]
А можете поподробнее описать ?

Добавлено через 5 минут
Дело в том , что у меня как бы это работает , мне нужно что бы и символы проверяло ( я это сделал ) и дробные числа тоже .

Добавлено через 7 минут
и да , это не работает

Добавлено через 21 минуту
В итоге я догадался как можно решить проблему , попросту приравняйте х к типу флоат .
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
03.12.2019, 19:29
Цитата Сообщение от Pilihrim Посмотреть сообщение
А можете поподробнее описать ?
Когда cin>> не может прочитать данные, он поднимает флаг ошибки. После этого cin в логических выражениях считается за false. cin.clear() сбрасывает флаг ошибки обратно. ignore вычищает огрызок строки которым cin подавился. Далее цикл while снова пытается прочитать и распарсить пользовательский ввод.
1
0 / 0 / 0
Регистрация: 15.01.2019
Сообщений: 9
03.12.2019, 20:06  [ТС]
Извините , я разобрался , у вас и в правду решение лучше.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.12.2019, 20:06
Помогаю со студенческими работами здесь

Целое число вывести, как число с плавающей точкой
Вот код. Нужно вывести значение переменной х не более чем 5 символами. Т.е. надо округлить его до первых 2 цифр и записать, как число с...

Целое число и число с плавающей точкой
Здравствуйте. Имеется строка для указания цены, в ней пользователь может указать как 10 так и 1.9 Мне необходимо проверить, if(...

Является ли вводимое число числом с плавающей точкой
Здравствуйте. Помогите написать прогу.является ли вводимое число числом с плавающей точкой

Преобразовать целое число в формат с плавающей запятой
С помощью какой команды (или набором команд) сопроцессора можно представить обычное число как число с плавающей точкой например просто...

Как программно различать число целое и с плавающей точкой
Привет :) Недавно решал задачу и там нужно было находить корни элементов массива и если корень целый то инкрементировать переменную. Я...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru