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

Узнай цену своей работы

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

Считать с клавиатуры целое неотрицательное число в десятичной системе счисления и основание новой системы счисления (целое число от 2 до 10). Вывести в консоль число, записанное в новой системе счисления. Задача решается без массивов. Вот моя програма она работает медленно. Как сделать быстрее без масивов
#include <stdio.h>
 
void print(int number, int step, int base) {
    if ( step != 0 ) {
        if ( step > number ) {
            printf("0");
            return print(number, step / base, base);
        } else {
            printf("%d", number / step);
            return print(number % step, step / base, base);
        }
    } 
}
 
int main() {
    int base, number, step;
    
    scanf("%d%d", &number, &base);
    
    for ( step = 1; step <= number; ) {
        step *= base;
    }
    print(number, step / base, base);
    printf("\n");
    scanf("\n");
    return 0;
}

Решение задачи: «Перевод чисел из десятичной системы счисления в любую другую»

textual
Листинг программы
#include <conio.h>
 
int Input()
{
    char c;
    int s=0;
    while (1)
    {
        c=getch();
        if (c==13) return s;
        if ((c>='0') && (c<='9'))
        {
            printf("%c",c);
            s=s*10+(c-'0');
         }
    }
}      
void Print(int n, int p)
{
     if (n == 0) return;
     Print(n/p,p);
     printf("%d",n%p);
}
 
int main(int argc, char *argv[])
{
    int n,p;
    printf("n=");
    n=Input();
    printf("\np=");
    p=Input();
    printf("\n");
    Print(n,p);
    printf("\n");
    system("PAUSE");
    return EXIT_SUCCESS;
}

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

  1. В функции main программа запрашивает у пользователя два числа (n и p) в десятичной системе счисления, затем передает их в функцию Print.
  2. Функция Print рекурсивно выводит число n в системе счисления с основанием p.
  3. В функции Input программа запрашивает у пользователя ввод, пока он не нажмет клавишу Enter (не введет символ новой строки).
  4. Каждое введенное число (или символ) проверяется в функции Input на соответствие допустимому диапазону для десятичной системы счисления.
  5. Если введенный символ является числом от 0 до 9, он добавляется к результату и умножается на 10 в функции Input.
  6. Если введенный символ является символом новой строки, функция Input возвращает результат.
  7. В функции main программа вызывает функцию Input для ввода двух чисел, затем передает эти числа в функцию Print.
  8. Программа выводит результат в консоль, затем ожидает, пока пользователь не нажмет клавишу Enter, прежде чем завершиться.

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


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

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

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