Перевод из десятичной в троичную - C (СИ)

Формулировка задачи:

С клавиатуры ввести целое беззнаковое число. Сформировать символьною строку, в который занести три цифры троичного кода этого числа. Напечатать строку с троичным кодом и указать, сколько раз в нем повторяется каждая из цифр.

Код к задаче: «Перевод из десятичной в троичную - C (СИ)»

textual
#include <stdio.h>
#include <Windows.h>
 
char reVal(int num)
{
    if (num >= 0 && num <= 9)
        return (char)(num + '0');
    else
        return (char)(num - 10 + 'A');
}
 
void strev(char *str)
{
    int len = strlen(str);
    int i;
    for (i = 0; i < len / 2; i++)
    {
        char temp = str[i];
        str[i] = str[len - i - 1];
        str[len - i - 1] = temp;
    }
}
 
char* fromDeci(char res[], int inputNum)
{
    int index = 0;  
    while (inputNum > 0)
    {
        res[index++] = reVal(inputNum % 3);
        inputNum /= 3;
    }
    res[index] = '\0';
 
    strev(res);
 
    return res;
}
 
int main(){
    int i, count_of_2 = 0, count_of_1 = 0, count_of_0 = 0;
    int inputNum = 251439;
    char result [64];
    printf("Equivalent of %d in ternary numerical system is "
        " %s\n", inputNum, fromDeci(result, inputNum));
    for (i = 0; i < strlen(result); i++) {
        if (result[i] == '2') 
            count_of_2++;
        else if (result[i] == '1') 
            count_of_1++;
        else if (result[i] == '0') 
            count_of_0++;
    }
    printf("Number of 2: %d\nNumber of 1: %d\nNumber of 0: %d", count_of_2, count_of_1, count_of_0);
 
    system("pause");
    return 0;
}

8   голосов, оценка 4.125 из 5


СОХРАНИТЬ ССЫЛКУ