Перевод чисел из десятичной системы счисления в любую другую - 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;
}
Объяснение кода листинга программы
- В функции
mainпрограмма запрашивает у пользователя два числа (n и p) в десятичной системе счисления, затем передает их в функциюPrint. - Функция
Printрекурсивно выводит число n в системе счисления с основанием p. - В функции
Inputпрограмма запрашивает у пользователя ввод, пока он не нажмет клавишу Enter (не введет символ новой строки). - Каждое введенное число (или символ) проверяется в функции
Inputна соответствие допустимому диапазону для десятичной системы счисления. - Если введенный символ является числом от 0 до 9, он добавляется к результату и умножается на 10 в функции
Input. - Если введенный символ является символом новой строки, функция
Inputвозвращает результат. - В функции
mainпрограмма вызывает функциюInputдля ввода двух чисел, затем передает эти числа в функциюPrint. - Программа выводит результат в консоль, затем ожидает, пока пользователь не нажмет клавишу Enter, прежде чем завершиться.