72 lines
1.0 KiB
C
72 lines
1.0 KiB
C
/*
|
|
* delay.c
|
|
*
|
|
* Created: 03.06.2023 12:34:55
|
|
* Author: Admin
|
|
*/
|
|
#include "func.h"
|
|
|
|
void delay() {
|
|
for(volatile long i = 0; i < 1000; i++){};
|
|
}
|
|
|
|
int count_digits(long number) {
|
|
int count = 0;
|
|
|
|
if (number == 0) {
|
|
return 1;
|
|
}
|
|
|
|
if (number < 0) {
|
|
number = -number;
|
|
}
|
|
|
|
while (number > 0) {
|
|
number /= 10;
|
|
count++;
|
|
}
|
|
|
|
return count;
|
|
}
|
|
|
|
void split_digits(long number, int* digits, int size) {
|
|
int digit;
|
|
int index = 0;
|
|
|
|
if (number == 0) {
|
|
digits[0] = 0;
|
|
return;
|
|
}
|
|
|
|
if (number < 0) {
|
|
number = -number;
|
|
}
|
|
|
|
while (number > 0 && index < size) {
|
|
digit = number % 10;
|
|
digits[index] = digit;
|
|
number /= 10;
|
|
index++;
|
|
}
|
|
}
|
|
|
|
static char map(int digit) {
|
|
if (digit >= 0 && digit <= 9)
|
|
return digit + 0x09;
|
|
else
|
|
return 0x01;
|
|
}
|
|
|
|
void map_digits(char* arr, int *digits, int size) {
|
|
int idx = 0;
|
|
for (int i = size - 1; i >= 0; i--) {
|
|
arr[idx] = map(digits[i]);
|
|
idx++;
|
|
}
|
|
}
|
|
|
|
void prepare_data(char *arr, int number, int size) {
|
|
int digits[size];
|
|
split_digits(number, digits, size);
|
|
map_digits(arr, digits, size);
|
|
} |