Шестиразрядное десятичное натуральное число изобразить цифрами по 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;
}

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

  1. #include — подключает файл стандартного ввода/вывода, что позволяет использовать функции вывода на экран
  2. void IntToAddr(int addr, unsigned char index[6]) — функция принимает на вход шестиразрядное десятичное число и массив из 6 элементов типа unsigned char. Функция перебирает массив, беря остаток от деления входного числа на 10 и записывая его в соответствующий элемент массива. Деление на 10 выполняется для того, чтобы взять последнюю цифру шестиразрядного числа.
  3. void Print(int addr) — функция принимает на вход шестиразрядное десятичное число и выводит его на экран в 9-сегментном формате с использованием функции printf.
  4. *const char CDigits[] = { _     _  _     _  _  _  _  _,** — массив строк, соответствующих каждому сегменту дисплея.
  5. | | /| _| _||_||_ |_   ||_||_|, — строка, соответствующая первому сегменту дисплея.
  6. |_|  ||_  _|  | _||_|  ||_| _|}; — строка, соответствующая второму сегменту дисплея.
  7. unsigned char index[6]; — массив, в который функция IntToAddr записывает цифры шестиразрядного числа.
  8. size_t i, j; — переменные для перебора массива.
  9. for (i = 0; i < 3; ++i) — цикл, выполняющийся 3 раза, для вывода каждой строки на экран.
  10. for (j = 0; j < 6; ++j) — цикл, выполняющийся 6 раз, для вывода каждого сегмента на экран.
  11. *printf(%.3s, CDigits[i] + (index[j] 3));** — форматированный вывод строки на экран с смещением на 3 символа (так как в массиве CDigits каждая строка начинается с 4-го символа).
  12. printf(\n); — перевод строки.
  13. int main() — точка входа в программу.
  14. Print(123456); — вызов функции Print с шестиразрядным числом 123456.
  15. Print(789012); — вызов функции Print с шестиразрядным числом 789012.
  16. return 0; — завершение работы программы.

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


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

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

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