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

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

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

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
 
main()
{
    int n;
    const int radix;
    
    setlocale(0, "");
    do {
    printf("Введите число в 10-чной системе счисления для перевода:\n");
    scanf_s("%d", &n);
    } while(n<0);
    
    printf("Введите систему счисления в которую вы хотите перевести число:\n");
    scanf_s("%d", &radix);
    
    char buffer[] = "00000000";
    int i = radix;
    
    do {
        int x = n % radix;
        n = n / radix;
        char z;
        if( x<10 )
          z='0'+x;
        else
          z='A'-10+x;
        buffer = z;
        i--;
    } while (n>0);
    
    printf("\nЗапись в %d-чной системе счисления: %s\n", radix, buffer);
}
В 30 строке ошибка [Error] assignment to expression with array type

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

textual
Листинг программы
    char buffer[33] = "", z;
    char *p=buffer+32;
    
    do {
            x = n % radix;
            z=x+((x<10)?'0':'A'-10);
            *--p=z;
            n/= radix;
    } while (n);
    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
Похожие ответы