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

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

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

Считать с клавиатуры целое неотрицательное число в десятичной системе счисления и основание новой системы счисления (целое число от 2 до 10). Вывести в консоль число, записанное в новой системе счисления. Задача решается без массивов. Вот моя програма она работает медленно. Как сделать быстрее без масивов
Листинг программы
  1. #include <stdio.h>
  2. void print(int number, int step, int base) {
  3. if ( step != 0 ) {
  4. if ( step > number ) {
  5. printf("0");
  6. return print(number, step / base, base);
  7. } else {
  8. printf("%d", number / step);
  9. return print(number % step, step / base, base);
  10. }
  11. }
  12. }
  13. int main() {
  14. int base, number, step;
  15. scanf("%d%d", &number, &base);
  16. for ( step = 1; step <= number; ) {
  17. step *= base;
  18. }
  19. print(number, step / base, base);
  20. printf("\n");
  21. scanf("\n");
  22. return 0;
  23. }

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

textual
Листинг программы
  1. #include <conio.h>
  2.  
  3. int Input()
  4. {
  5.     char c;
  6.     int s=0;
  7.     while (1)
  8.     {
  9.         c=getch();
  10.         if (c==13) return s;
  11.         if ((c>='0') && (c<='9'))
  12.         {
  13.             printf("%c",c);
  14.             s=s*10+(c-'0');
  15.          }
  16.     }
  17. }      
  18. void Print(int n, int p)
  19. {
  20.      if (n == 0) return;
  21.      Print(n/p,p);
  22.      printf("%d",n%p);
  23. }
  24.  
  25. int main(int argc, char *argv[])
  26. {
  27.     int n,p;
  28.     printf("n=");
  29.     n=Input();
  30.     printf("\np=");
  31.     p=Input();
  32.     printf("\n");
  33.     Print(n,p);
  34.     printf("\n");
  35.     system("PAUSE");
  36.     return EXIT_SUCCESS;
  37. }

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы