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

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

Войти
Регистрация
Восстановить пароль
 
Праздник
0 / 0 / 0
Регистрация: 14.09.2013
Сообщений: 15
#1

как поставить защиту от дураков? - C++

14.09.2013, 17:52. Просмотров 450. Ответов 7
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "stdafx.h"
#include <math.h>
#include <clocale>
#include <iostream>
using namespace std;
 
 
int main ()
{
    setlocale(LC_ALL, "Russian");
     double grad=0,rez=0, rad=0;
     const double PI = 3.1415;
           cout << "Введите значение в градусах: \n";
           cin >> grad; 
           rad=(grad*PI)/180; //Программа переводит значение записаное в градсах в радианы
         rez=pow(cos(rad),2); //Возведение в квадрат
         cout <<  rez << endl; 
   system ("pause");
 return 0;
}
Нужно сделать защиту от "дураков", не знаю как реализовать,
когда пользователь вводит букву или что то еще кроме цифр, надо чтоб прога выдавала ошибку
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.09.2013, 17:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос как поставить защиту от дураков? (C++):

Защита от дураков - C++
В функцию добавления, нужно добавить защиту от дураков: void Newadd() { Abbase z2; system (&quot;cls&quot;); cout &lt;&lt;&quot;Abbase 0.51...

Поставить рандомную матрицу, перепробовал уже много способов. Как поставить? - C++
нужно чтобы матрицу вводил не я после запуска программы,а она сама появлялась с рандомными числами! #include &lt;iostream&gt; #include...

как сделать защиту от дурака в этом коде? - C++
как сделать чтобы при вводе чисел больше 20 или букв писало о неправильно вводимых данных #include &quot;stdafx.h&quot; #include...

Как написать защиту от некорректного ввода для моей проги? - C++
void task_1(int **A, int M, int N) { int i=0, sum=0; //1.) сумму элементов в тех строках, которые содержат хотя бы один отрицательный...

Написать проверку на соответствие ввода целочисленному типу ("защита от дураков") - C++
Когда вводят букву программа зацикливается int get_move(int i){ std::cout&lt;&lt;&quot;Welcome to tic-tac-toe!\n\n&quot;; std::cout&lt;&lt;&quot;\nMove...

Как с scanf сделать "защиту от дурака"? - C++
Нужно, чтобы пользователь ввел две целочисленные переменные. Как делал я: bool ReadInteger(int &amp;var) { if (scanf(&quot;%d&quot;, &amp;var) != 1)...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
SummerRain
326 / 325 / 17
Регистрация: 16.12.2012
Сообщений: 544
14.09.2013, 17:58 #2
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
#include <math.h>
#include <clocale>
#include <iostream>
using namespace std;
 
 
int main ()
{
    setlocale(LC_ALL, "Russian");
    double grad=0,rez=0, rad=0;
    const double PI = 3.1415;
    cout << "Введите значение в градусах: \n";
    while (true) {
        cin >> grad; 
        if (!cin) {
            cout << "Введите число!" << endl;
            cin.sync();
            cin.clear();
        }
        else break;
    }
    rad=(grad*PI)/180; //Программа переводит значение записаное в градсах в радианы
    rez=pow(cos(rad),2); //Возведение в квадрат
    cout <<  rez << endl; 
    system ("pause");
    return 0;
}
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
14.09.2013, 17:58 #3
C++
1
2
3
4
5
6
if (!(cin >> grad))
    {
        cout<<"Error";
        fflush(stdin);
        cin.clear();
    }
Праздник
0 / 0 / 0
Регистрация: 14.09.2013
Сообщений: 15
14.09.2013, 18:07  [ТС] #4
Спасибо
А если пользователь введет так: 54рпкгрпш,
или так: 5,,4

Добавлено через 3 минуты
Спасибо
А если пользователь введет так: 54рпкгрпш,
или так: 5,,4
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
14.09.2013, 18:09 #5
Тогда так
C++
1
2
3
4
5
6
if (!(cin >> grad))
    {
        cout<<"Error";
        cin.clear();
    }
    fflush(stdin);
И в результате получится число, которое до первой буквы
-=ЮрА=-
Заблокирован
Автор FAQ
14.09.2013, 18:36 #6
Праздник, всё давным давно воплощено
Безопасный ввод через функцию-шаблон
Paket236
2 / 2 / 0
Регистрация: 16.08.2013
Сообщений: 52
15.09.2013, 01:06 #7
Праздник
Писал давненько такую штуку для себя:
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
int vvodsogr(int dl=6, int ot=0, int do_=-1);
int CharToInt(char* mas);
 
int main()
{
    vvodsogr();
    return 0;
}
 
int CharToInt(char* mas)
{
    int x=0;
    for(; *mas!=0; )
    {   x*=10;
        x+=(*mas-48);
        mas++;
    }
    return x;
}
 
int vvodsogr(int dl, int ot, int do_)
{
    int i;
    char vv0d[80]="\0";
    fflush(stdin);
    fgets(vv0d, sizeof(vv0d), stdin);
    for(i=0; (unsigned)i<strlen(vv0d); i++) {if(vv0d[i]=='\n') vv0d[i]=0;}
    
    if(vv0d[0]==0) return -1;
    for(i=0; vv0d[i]!=0; i++)
    {
        if(int(vv0d[i]-48)<0 || int(vv0d[i]-48)>9 || i==dl) return -1;
    }
    if( (CharToInt(vv0d)<ot && ot!=0) ||
        (CharToInt(vv0d)>do_ && do_!=-1) ) return -1;
    else return CharToInt(vv0d);
}

Функция vvodsogr() возвращает введённое число либо -1, если это не число. Первый параметр - максимальная длина числа, остальные два - не помню
Да, и работает только с положительными числами.
gray_fox
What a waste!
1511 / 1214 / 69
Регистрация: 21.04.2012
Сообщений: 2,550
Завершенные тесты: 3
15.09.2013, 02:21 #8
Цитата Сообщение от ViktorKozlov Посмотреть сообщение
fflush(stdin);
Нельзя так с потоками ввода, вызывает неопределённое поведение.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.09.2013, 02:21
Привет! Вот еще темы с ответами:

как в if поставить for? - C++
Надо для всех значений массива проверить, равно ли какому либо из этих значений число введенное с клавиатуры. ЕСли k не равняется ни...

Как сделать защиту от дураков - Delphi
Здравствуйте, подскажите как сделать защиту от дураков? Есть DBGrid в нем есть поле номер. Номер повторятся не должен, если при добавлении...

Как поставить защиту на папки? - PHP
Всем привет! В общем например когда заходишь на www.site.ru/content/ у меня отображаюстя все файлы и папки... Так вот, как сделать, чтобы...

Как поставить защиту на админку? - PHP БД
Привет. у последний учебный год и стал вопроса диплома и я выбрал тему Создать сайт на собственном движке но это как нит можно реализовать...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
15.09.2013, 02:21
Ответ Создать тему
Опции темы

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