Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
TheSava
0 / 0 / 0
Регистрация: 14.03.2017
Сообщений: 37
1

Безопасное считывание числа

02.06.2018, 23:07. Просмотров 213. Ответов 9
Метки нет (Все метки)

Всем привет! Я только начинаю изучать C и у меня такой вопрос: Я хочу написать программу, которая считывает 2 числа и выполняет с ними 4 арифметических действия, НО программа должна считать именно 2 и именно числа, а иначе она должна предложить ввести данные снова, так вот вопрос состоит в том, как это сделать? То есть как сделать безопасный ввод?
Очень нужен ваш ответ!
Заранее спасибо!))
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2018, 23:07
Ответы с готовыми решениями:

Считывание числа с клавиатуры
Здравствуйте. Есть программа, которая постоянно обновляет консоль. При нажатии на клавишу...

Безопасное хранение файлов или безопасное подключение к БД
Возник такой вопрос. Подключение к БД делаю с помощью include который загружает файл содержащий...

Считывание числа
Всем привет! Я только начинаю изучать C++ и у меня такой вопрос: Я хочу написать программу, которая...

Считывание введённого числа
Имеется поле для ввода чисел <p><b>Выборка по ID группы:</b><br> <input type="number"...

Неполное считывание числа
При составлении отчета почему-то считывает из таблицу оклад только тремя последними цифрами. Т.е....

9
trifecta
8 / 7 / 6
Регистрация: 18.09.2017
Сообщений: 55
03.06.2018, 00:02 2
C
1
2
3
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
0
TheSava
0 / 0 / 0
Регистрация: 14.03.2017
Сообщений: 37
03.06.2018, 00:14  [ТС] 3
trifecta, А если я с клавиатуры введу не числа?
0
iAlexander
1 / 1 / 1
Регистрация: 25.09.2014
Сообщений: 46
03.06.2018, 00:42 4
Если собираешься обрабатывать случаи ввода не цифр,то нужно будет сделать примерно следующее:считывашь посимвольно введенные данные в символьный массив,добавив условие,что getchar>='0'&&getchar<'9',иначе выводится сообщение о неправильном вводе.далее,если введены только цифры-используем функцию которая перевед наш символьный массив цифр в одно число(операция 'a'-'0',где а-цифра от 0 до 9,вернет численное значение символа,т.е. '9'-'0'=9,как перевести не цифру,а число-прочитай в интернете или может сам додумаешься),далее значение,возвращенное этой функцией присваиваем какой-то переменной,так же и со второй,а далее делаешь операции,которые нужны.
0
SlavaSokolov
170 / 134 / 105
Регистрация: 14.04.2016
Сообщений: 735
05.06.2018, 17:06 5
Цитата Сообщение от iAlexander Посмотреть сообщение
getchar>='0'&&getchar<'9'
Неплохо, неплохо, а отрицательных чисел у нас больше нет?
0
iAlexander
1 / 1 / 1
Регистрация: 25.09.2014
Сообщений: 46
05.06.2018, 17:12 6
А тебе представляется проблемным обработать случай ввода отрицательного числа?
0
SlavaSokolov
170 / 134 / 105
Регистрация: 14.04.2016
Сообщений: 735
05.06.2018, 17:21 7
Цитата Сообщение от iAlexander Посмотреть сообщение
А тебе представляется проблемным обработать случай ввода отрицательного числа?
Да, даже не представляю как это сделать...
0
iAlexander
1 / 1 / 1
Регистрация: 25.09.2014
Сообщений: 46
05.06.2018, 17:29 8
сочувствую.
0
ValeryS
Модератор
7444 / 5636 / 716
Регистрация: 14.02.2011
Сообщений: 19,189
Завершенные тесты: 1
08.06.2018, 13:50 9
Цитата Сообщение от TheSava Посмотреть сообщение
А если я с клавиатуры введу не числа?
попробуй
Цитата Сообщение от trifecta Посмотреть сообщение
scanf("%d %d", &a, &b);
не даст
0
Ovederax
198 / 137 / 95
Регистрация: 30.04.2017
Сообщений: 292
08.06.2018, 17:51 10
TheSava,
int scanf(const char *управляющая_строка, ...);
Эта функция возвращает количество тех элементов данных, которым было успешно присвоено значение...
Вот кусок кода в котором применяется проверка на корректный ввод, можешь сделать ввод чисел в своей программе по аналогии...
Кликните здесь для просмотра всего текста
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
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
 
int main()
{
    system("chcp 1251");
    system("cls");
    int len;
    int correct;
    while(1)
    {
        printf("Введите длину слова ");
        correct = scanf("%i",&len);
        if(correct!=1)                      //Не удалось считать число
        {
            printf("Нужно ввести число\n");
            scanf("%*[^\n]");
            continue;
        }
        char s;
        correct = scanf("%1[^\n]",&s);
        if(correct!=0)                  //был ли ввод чего-либо еще кроме числа
        {
            printf("Нужно ввести только число!\n");
            scanf("%*[^\n]");           //очистка буффера - можно заменить на flush(stdin);
            continue;                   //повтор ввода
        }
        if(len<3||len>10)
        {
            printf("Длинна должна быть от 3 до 10\n");
            continue;
        }
        break;
    }
    printf("Длинна = %i",len);
    return 0;
}


Не по теме:

Старая тема, что я тут делаю...?

0
08.06.2018, 17:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2018, 17:51

Считывание числа побитово
Помогите пожалуйста. Есть число,скажем 0b00001001. Необходимо каждый бит ДВОИЧНОГО числа сравнить...

Считывание числа из текстовика посимвольно
в текстовом файле забито число(например 1368), нужно посимвольно его подсчитать и вывести на экран....

Считывание из файла строки и числа
Подскажите, как считать из одной строки файла отдельно строку и число. Например, такая строка из...


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

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

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