Написать программу, которая проверяет, является ли введенная с клавиатуры строка двоичным числом - 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;
}

Объяснение кода листинга программы

  1. Подключение необходимых библиотек для работы с консолью и обработки ошибок.
  2. Объявление типа переменной str_t для хранения строки символов.
  3. Макросом get_str осуществляется ввод строки с клавиатуры с помощью функции scanf.
  4. В функции is_bin_number происходит проверка введенной строки на соответствие двоичному числу.
  5. Сначала инициализируется переменная errno и сбрасывается в ноль.
  6. Затем, с помощью функции strtol, происходит попытка преобразования строки в длинное число с основанием 2.
  7. Результат проверки сохраняется в переменной t.
  8. В случае успешного преобразования, функция возвращает значение 1, иначе возвращает значение 0.
  9. В основной функции main происходит бесконечный цикл, в котором с помощью printf выводится приглашение для ввода строки.
  10. Если строка успешно введена с клавиатуры, вызывается функция is_bin_number для проверки соответствия введенной строки двоичному числу.
  11. Результат проверки функции is_bin_number выводится на экран с помощью printf.
  12. Цикл продолжается до тех пор, пока пользователь не введет пустую строку.
  13. В конце программы возвращается значение 0, что означает успешный конец работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.846 из 5
Похожие ответы