Программа для перевода в любую систему счисления - 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);
- }
Решение задачи: «Программа для перевода в любую систему счисления»
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);
Объяснение кода листинга программы
- Объявляется массив buffer типа char с размером 33 символа и инициализируется пустой строкой.
- Указатель p инициализируется значением buffer+32, т.е. указывает на последний элемент массива buffer.
- Запускается цикл do-while, который выполняется до тех пор, пока переменная n не станет равной нулю.
- Внутри цикла переменная x вычисляется как остаток от деления n на radix.
- Затем переменная z вычисляется как сумма x и ('0' в случае, если x меньше или равно 9, или 'A'-10 в противном случае).
- Значение z записывается в память по адресу, указываемому p (т.е. в обратном порядке в массиве buffer).
- Переменная n делится на radix.
- Цикл выполняется заново.
- После окончания цикла, в консоль выводится строка, представляющая запись в radix-ной системе счисления, начиная с последнего символа массива buffer (т.е. с самого старшего разряда числа).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д