Шестиразрядное десятичное натуральное число изобразить цифрами по 9-сегментному шаблону - C (СИ)
Формулировка задачи:
Почтовый индекс. Заданное шестиразрядное десятичное натуральное число изобразить цифрами по 9-сегментному шаблону, используемому при почтовой индексации.
Решение задачи: «Шестиразрядное десятичное натуральное число изобразить цифрами по 9-сегментному шаблону»
textual
Листинг программы
#include <stdio.h> //----------------------------------------------------------------------------- void IntToAddr(int addr, unsigned char index[6]) { int i; for (i = 5; i >= 0; --i) { index[i] = addr % 10; addr /= 10; } } //----------------------------------------------------------------------------- void Print(int addr) { const char* CDigits[] = { " _ _ _ _ _ _ _ _ ", "| | /| _| _||_||_ |_ ||_||_|", "|_| ||_ _| | _||_| ||_| _|"}; unsigned char index[6]; IntToAddr(addr, index); size_t i, j; for (i = 0; i < 3; ++i) { for (j = 0; j < 6; ++j) { printf("%.3s ", CDigits[i] + (index[j] * 3)); } printf("\n"); } } //----------------------------------------------------------------------------- int main() { Print(123456); Print(789012); return 0; }
Объяснение кода листинга программы
- #include
— подключает файл стандартного ввода/вывода, что позволяет использовать функции вывода на экран - void IntToAddr(int addr, unsigned char index[6]) — функция принимает на вход шестиразрядное десятичное число и массив из 6 элементов типа unsigned char. Функция перебирает массив, беря остаток от деления входного числа на 10 и записывая его в соответствующий элемент массива. Деление на 10 выполняется для того, чтобы взять последнюю цифру шестиразрядного числа.
- void Print(int addr) — функция принимает на вход шестиразрядное десятичное число и выводит его на экран в 9-сегментном формате с использованием функции printf.
- *const char CDigits[] = {
_ _ _ _ _ _ _ _
,** — массив строк, соответствующих каждому сегменту дисплея. | | /| _| _||_||_ |_ ||_||_|
, — строка, соответствующая первому сегменту дисплея.|_| ||_ _| | _||_| ||_| _|
}; — строка, соответствующая второму сегменту дисплея.- unsigned char index[6]; — массив, в который функция IntToAddr записывает цифры шестиразрядного числа.
- size_t i, j; — переменные для перебора массива.
- for (i = 0; i < 3; ++i) — цикл, выполняющийся 3 раза, для вывода каждой строки на экран.
- for (j = 0; j < 6; ++j) — цикл, выполняющийся 6 раз, для вывода каждого сегмента на экран.
- *printf(
%.3s
, CDigits[i] + (index[j] 3));** — форматированный вывод строки на экран с смещением на 3 символа (так как в массиве CDigits каждая строка начинается с 4-го символа). - printf(
\n
); — перевод строки. - int main() — точка входа в программу.
- Print(123456); — вызов функции Print с шестиразрядным числом 123456.
- Print(789012); — вызов функции Print с шестиразрядным числом 789012.
- return 0; — завершение работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д