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

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

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

Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <locale.h>
  4. main()
  5. {
  6. int n;
  7. const int radix;
  8. setlocale(0, "");
  9. do {
  10. printf("Введите число в 10-чной системе счисления для перевода:\n");
  11. scanf_s("%d", &n);
  12. } while(n<0);
  13. printf("Введите систему счисления в которую вы хотите перевести число:\n");
  14. scanf_s("%d", &radix);
  15. char buffer[] = "00000000";
  16. int i = radix;
  17. do {
  18. int x = n % radix;
  19. n = n / radix;
  20. char z;
  21. if( x<10 )
  22. z='0'+x;
  23. else
  24. z='A'-10+x;
  25. buffer = z;
  26. i--;
  27. } while (n>0);
  28. printf("\nЗапись в %d-чной системе счисления: %s\n", radix, buffer);
  29. }
В 30 строке ошибка [Error] assignment to expression with array type

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

textual
Листинг программы
  1.     char buffer[33] = "", z;
  2.     char *p=buffer+32;
  3.    
  4.     do {
  5.             x = n % radix;
  6.             z=x+((x<10)?'0':'A'-10);
  7.             *--p=z;
  8.             n/= radix;
  9.     } while (n);
  10.     printf("\nЗапись в %d-чной системе счисления: %s\n", radix, p);

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

  1. Объявляется массив buffer типа char с размером 33 символа и инициализируется пустой строкой.
  2. Указатель p инициализируется значением buffer+32, т.е. указывает на последний элемент массива buffer.
  3. Запускается цикл do-while, который выполняется до тех пор, пока переменная n не станет равной нулю.
  4. Внутри цикла переменная x вычисляется как остаток от деления n на radix.
  5. Затем переменная z вычисляется как сумма x и ('0' в случае, если x меньше или равно 9, или 'A'-10 в противном случае).
  6. Значение z записывается в память по адресу, указываемому p (т.е. в обратном порядке в массиве buffer).
  7. Переменная n делится на radix.
  8. Цикл выполняется заново.
  9. После окончания цикла, в консоль выводится строка, представляющая запись в radix-ной системе счисления, начиная с последнего символа массива buffer (т.е. с самого старшего разряда числа).

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


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

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

6   голосов , оценка 3.833 из 5

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

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

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