Перевод чисел из десятичной системы счисления в любую другую - 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, прежде чем завершиться.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д