Написать программу, которая проверяет, является ли введенная с клавиатуры строка двоичным числом - C (СИ)
Формулировка задачи:
2. Написать программу, которая проверяет, является ли введенная с клавиатуры строка двоичным числом.
Все еще актуально
Решение задачи: «Написать программу, которая проверяет, является ли введенная с клавиатуры строка двоичным числом»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <errno.h> typedef char str_t[256]; #define get_str(s) ( scanf("%255[^\n]%*c", (s)) == 1 ) int is_bin_number(const char * s) { long n; char * t; errno = 0; n = strtol(s, &t, 2); return ( ! ( *t || errno ) ); } int main(void) { str_t str; while ( printf("Bin number: ") && get_str(str) ) printf("%s\n", ( is_bin_number(str) ) ? "OK" : "FAIL"); return 0; }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с консолью и обработки ошибок.
- Объявление типа переменной
str_t
для хранения строки символов. - Макросом
get_str
осуществляется ввод строки с клавиатуры с помощью функцииscanf
. - В функции
is_bin_number
происходит проверка введенной строки на соответствие двоичному числу. - Сначала инициализируется переменная
errno
и сбрасывается в ноль. - Затем, с помощью функции
strtol
, происходит попытка преобразования строки в длинное число с основанием 2. - Результат проверки сохраняется в переменной
t
. - В случае успешного преобразования, функция возвращает значение
1
, иначе возвращает значение0
. - В основной функции
main
происходит бесконечный цикл, в котором с помощьюprintf
выводится приглашение для ввода строки. - Если строка успешно введена с клавиатуры, вызывается функция
is_bin_number
для проверки соответствия введенной строки двоичному числу. - Результат проверки функции
is_bin_number
выводится на экран с помощьюprintf
. - Цикл продолжается до тех пор, пока пользователь не введет пустую строку.
- В конце программы возвращается значение
0
, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д