0 / 0 / 0
Регистрация: 11.05.2021
Сообщений: 1
1

Проверка правильности ввода чисел

11.05.2021, 08:03. Показов 466. Ответов 3
Метки нет (Все метки)

У меня проблема, иногда в коде когда пишешь буквы вместо цифр то код пишет что надо ввести только числа, но если после этого написать правильные цифры которые не больше 180 и не меньше 0 то код все равно пишет что нужно числа от 0 до 180


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 "iostream"
#include "math.h"
 
#define PI 3.14159265
 
using namespace std;
bool b;
int main (){
do{
float x,y,c; // х - угол в градусах
setlocale(0, "Russian");
cout << "Введите угол = ";
while (!(cin >> x))
    {
        cout << "Вводите только числа\n";
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
      }
   while (x > 180 || x <0)
        {
          cout << "Вводите числа от 180 до 0" << endl;
             while (!(cin >> x))
    {
        cout << "Вводите только числа\n";
        cin.clear(); 
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
      while (x > 180 || x <0)
        {
          cout << "Вводите числа от 0 до 180" << endl;
            cin >> x;
            }}}
y=x * PI / 180;
c=sin(y);
cout << "sin" << (x) << " = " << c << endl;
cout<<"Начать код снова"<<endl;
cout<<"1=>Да!"<<endl;
cout<<"0=>Нет!"<<endl;
cin>>b;
if(b!=1){
    b==false;}
}while(b==true);
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.05.2021, 08:03
Ответы с готовыми решениями:

Проверка правильности ввода. Запретить ввод чисел
Здравствуйте форумчане! Хочу сделать в коде проверку типа: если вводить, где положено string ...

Проверка правильности ввода
Совсем запуталась.Надо ввести целое число. Как сделать так, чтобы при неправильном вводе(символ,...

Проверка правильности ввода
Доброго времени суток. Как, в приведенном ниже коде, сделать так, что бы при вводе отрицательного...

Проверка правильности ввода
Необходимо проверить, правильно ли введено значение переменной int gender; cout &lt;&lt; &quot;Введите ваш...

3
129 / 81 / 49
Регистрация: 10.01.2020
Сообщений: 293
11.05.2021, 08:24 2
Sagi, вроде все нормально работает, но библиотеки нужно в треугольных скобках писать.
C++
1
2
#include <iostream>
#include <math.h>
0
Модератор
Эксперт С++
12126 / 9791 / 5916
Регистрация: 18.12.2011
Сообщений: 26,271
11.05.2021, 08:40 3
Не стоит делать такие сложные вложенные циклы, если можно обойтись одним:
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
#define _USE_MATH_DEFINES
#include <iostream>
#include <cmath>
#include <clocale>
using namespace std;
int main (){
    setlocale(LC_ALL, "Russian");
    bool b;
    do
    {
        double x=0; // х - угол в градусах
        while(true)
        {
            cout << "Введите угол в диапазоне [0,180] градусов:";
            cin >> x;
            if( !cin || x<0.0 || x>180.0 )
            {
                cin.clear();
                cin.ignore(1024, '\n');
            }else
                break;
        }
        double c=sin(x*M_PI/180.0);
        cout << "sin(" << x << ")=" << c << endl;
        cout<<"Начать код снова\n1=>Да!\n0=>Нет!"<<endl;
        cin>>b;
    }while(b); // b==true - Это масло масляное
    return 0;
}
0
Комп_Оратор)
Эксперт по математике/физике
8731 / 4476 / 602
Регистрация: 04.12.2011
Сообщений: 13,366
Записей в блоге: 16
11.05.2021, 10:10 4
Цитата Сообщение от Sagi Посмотреть сообщение
когда пишешь буквы вместо цифр то код пишет что надо ввести только числа, но если после этого написать правильные цифры которые не больше 180 и не меньше 0 то код все равно пишет что нужно числа от 0 до 180
Нужно восстановить поломанный поток. Вообще, лучше приглашение писать вне цикла/блока ввода. А в блоке ввода делать проверку и если поток сломался - восстанавливать, если не сломался но значение не в интервале - тоже считать ошибкой. А уже после выдавать новое и соответствующее ошибке сообщение.
А лучше сразу написать что нужно и пусть юзер сам отвечает. С++ не предназначен для кривых пальцев и склерозных мозгов. Ввод с клавиатуры в реальных библиотеках на плюсах не встречается (практически). Тут просто не предусмотрено комфортных средств проверки. Можно написать например.
Перед вводом произнесите три первых строки таблицы умножения наоборот. Потом пересчитайте пальцы на руках и проверьте их на прямизну. После этого подумайте стоит ли рисковать. Если все три проверки прошли успешно - введите число от 0 до 180 включительно.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.05.2021, 10:10
Помогаю со студенческими работами здесь

Проверка правильности ввода
Пишу программу С++ в консоле в RAD Studio. Программа представляет собой задачу. Пользователь вводит...

Проверка правильности ввода
1)Вывести ошибку в консоль, если в символ пользователь пытается вбить строку. 2)Вывести ошибку в...

Проверка правильности ввода пользователя
Всем привет! Столкнулся с такой проблемой, мне нужно организовать ручной ввод данных в масив целых...

Проверка правильности ввода строки
Доброго дня! Имеется строка string str, задана изначально, пользователь вводит с клавиатуры другую...

Проверка правильности ввода символа
Баг заключается в том, что когда мы вводим число в функции msgOfYesOrNot она переходит к функции...

Проверка правильности ввода числа
Всем привет! Прошу помочь с такой задачей: Дано число в двоичной системе счисления. Проверить...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru