Давні системи числення завжди цікавили людей своєю загадковістю та неповторністю. Однією з найцікавіших і найбільш вивчених є система Їцзин, в якій кожне число представлене символом з Їцзинського календаря. У цій статті ми розглянемо алгоритм конвертації цілих чисел в цю давню систему числення за допомогою мови програмування C.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
#include <stdio.h> #include <locale.h> #include <wchar.h> int main() { // Оголошення масиву символів Їцзин wchar_t Yijing[] = { 0x4dc0, 0x4dc1, 0x4dc2, ..., 0x4dff }; setlocale(LC_CTYPE, "C.UTF-8"); unsigned long long int x; int y = 0; int z = 0; // Зчитування введеного числа користувачем if (scanf("%llu", &x) == 1) { if (x <= 63) { // Виведення символу з Їцзинського календаря для чисел від 0 до 63 wprintf(L"%lc\n", Yijing[x]); } else { wchar_t acc[64] = {0}; while (x >= 64) { y = x % 64; acc[z] = Yijing[y]; z++; x = x / 64; } acc[z] = Yijing[x]; // Виведення символів з Їцзинського календаря для чисел більше 63 for (int i = z; i >= 0; i--) { wprintf(L"%lc", acc[i]); if (i > 0) wprintf(L" "); } wprintf(L"\n"); } } return 0; } |
У вищеприведеному коді ми використовуємо масив символів Їцзин для представлення символів цілих чисел у діапазоні від 0 до 63, а також для чисел більше 63, ми перетворюємо їх у систему числення за основою 64 та використовуємо відповідні символи з масиву Їцзин. Цей алгоритм дозволяє нам ефективно конвертувати цілі числа в давню систему числення Їцзин та виводити їх символи.