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