Сделать проверку на символы при вводе - C (СИ)
Формулировка задачи:
Сделал прогу на задачу"Дано натуральное число, равное выраженной в копейках цене некоторого товара, например 317, 100, и т.д. Выразить цену в гривнях и копейках, например 3 гривни 17 копеек... Написать на С.
Осталось сделать проверку на ввод символов, чтоб если вводятся символы, то выбивалась ошибка и снова произвести ввод.
include<stdio.h> #include<conio.h> void main(void) { clrscr(); int k,g,n,m,l; printf("Введите количество копеек n="); scanf("%d",&n); g=n/100; k=n%100; m=g%10; l=k%10; if(g>10&&g<20) printf("%d гривeн ",g); else if(m==1) printf("%d гривнa ",g); else if (m>=2&&m<5) printf("%d гривны ",g); else printf("%d гривен ",g); if(k>10&&k<20) printf("%d копеек ",k); else if(l==1) printf("%d копейка\n",k); else if(l>=2&&l<5) printf("%d копейки\n",k); else printf("%d копеек\n",k); getch(); }
Решение задачи: «Сделать проверку на символы при вводе»
textual
Листинг программы
#include <stdio.h> #include <ctype.h> #include <string.h> #include <stdlib.h> /* возвращает 0, если в строке только целое число, после последней цифры не должно быть пробелов, перевода строки, или ещё чего-нибудь */ int testVal(const char *str){ while ( isspace(*str) ) ++str; if ( *str == '+' || *str == '-' ) ++str; while ( *str && isdigit(*str) ) ++str; return *str; } int getIntVal(){ int val; char buf[32] = {0}; do { printf("Enter some integer value: "); if ( scanf("%31s", buf) != 1 ){ fprintf(stderr, "Can't get some value!\n"); exit(1); } } while ( testVal(buf) && printf("Bad value!\n") ); return atoi(buf); } int main(void){ int i; i = getIntVal(); printf("You entered %i\n", i); return 0; }
Объяснение кода листинга программы
- Программа включает в себя файлы
, , и . - Функция testVal проверяет, является ли строка числом. Возвращает 0, если в строке только целое число, после последней цифры не должно быть пробелов, перевода строки, или ещё чего-нибудь.
- В функции getIntVal() используется цикл do-while для получения значения от пользователя до тех пор, пока это значение не будет корректным.
- В цикле используется функция testVal() для проверки введенного значения.
- Если значение некорректно, выводится сообщение об ошибке.
- Когда значение будет корректным, оно преобразуется в целое число с помощью функции atoi и сохраняется в переменной i.
- В конце программы выводится значение i.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д