Перевод чисел в различные системы счисления - QBasic (28392)
Формулировка задачи:
Нужно составить программу:
Перевести действительное число X заданное в системе счисления с основанием q в систему счисления с основанием p (2≤q,p≤16) {Использовать правило замещения и правило деления-умножения}
P.S Правильно ли я понял что здесь нужно перевести число X из двоичной системы в шестнадцатиричную?
Решение задачи: «Перевод чисел в различные системы счисления»
textual
Листинг программы
' Программа для перевода целых чисел ' в разные системы счисления LITERAS$ = "0123456789ABCDEF" Ishodn$ = "10" 'Число для перевода n& = 5 'Исходная СС p& = 10 'Результирующая СС A& = 0 PZ& = 0 Result$ = "" CLS PRINT Ishodn$; " (основание"; n&; ")" ' Перевод в десятичную DO: kb$ = INKEY$ IF Ishodn$ = "" THEN EXIT DO MN& = INSTR(1, LITERAS$, RIGHT$(Ishodn$, 1)) - 1 Ishodn$ = LEFT$(Ishodn$, LEN(Ishodn$) - 1) A& = A& + MN& * (n& ^ PZ&) PZ& = PZ& + 1 LOOP UNTIL Ishodn$ = "" ' Перевод из десятичной системы в любую с основанием до 16 DO: kb$ = INKEY$ O& = A& MOD p& A& = A& / p& Result$ = MID$(LITERAS$, O& + 1, 1) + Result$ LOOP UNTIL A& = 0 PRINT Result$; " (основание"; p&; ")"
Объяснение кода листинга программы
- Объявлены переменные:
- LITERAS$ - строка, содержащая все возможные символы для перевода числа в различные системы счисления;
- Ishodn$ - строка, содержащая число для перевода;
- n& - переменная для хранения основания исходной системы счисления;
- p& - переменная для хранения основания результирующей системы счисления;
- A& - переменная для хранения значения числа в десятичной системе счисления;
- PZ& - переменная для хранения количества цифр в числе в десятичной системе счисления;
- Result$ - строка, в которую будет записан результат перевода числа в результирующую систему счисления.
- Выводится сообщение с числом для перевода и его основанием.
- Запускается цикл для перевода числа из исходной системы счисления в десятичную. Цикл выполняется до тех пор, пока не будет введен символ в поле ввода. Для каждой цифры числа в исходной системе счисления выполняется:
- Определяется позиция цифры в строке LITERAS$;
- Рассчитывается значение A& для данной позиции;
- Увеличивается значение PZ& на единицу;
- Результат добавляется к строке Result$.
- Запускается цикл для перевода числа из десятичной системы счисления в результирующую систему счисления. Цикл выполняется до тех пор, пока значение A& не станет равным нулю. Для каждой итерации цикла выполняется:
- Рассчитывается остаток от деления A& на p&;
- Значение A& уменьшается на полученный остаток;
- Результат остатка добавляется к строке Result$;
- Увеличивается значение p& на единицу.
- Выводится результат перевода числа в результирующую систему счисления.