Перевод чисел в различные системы счисления - QBasic (28258)
Формулировка задачи:
Перевести действительное число X заданное в системе счисления с основанием q в систему счисления с основанием p (2≤q,p≤16)
С помощью генератора случайных чисел (RND) создать и вывести на экран массив А 5x5 случайных действительных чисел в диапазоне от 2 до 4. Определить по А и вывести диагональную матрицу B 10х10 так, чтобы элементы главной диагонали определялись как произведение по соответствующим столбцам.
Пожалуйста помогите и объясните как это сделать. Заранее благодарен.
Решение задачи: «Перевод чисел в различные системы счисления»
textual
Листинг программы
CLS INPUT "vvedite chislo"; a$ INPUT "vvedite q"; q INPUT "vvedite p"; p DIM c(LEN(a$)) u$ = "0123456789ABCDEF" FOR i = 1 TO LEN(a$): FOR j = 1 TO LEN(u$) IF UCASE$(MID$(a$, i, 1)) = MID$(u$, j, 1) THEN c(i) = j - 1 NEXT: NEXT FOR i = LEN(a$) TO 1 STEP -1 b = b + c(i) * q ^ r r = r + 1 NEXT DO c$ = MID$(u$, (b MOD p) + 1, 1) + c$ b = b \ p LOOP UNTIL b = 0 PRINT STRING$(80, 196) PRINT c$
Объяснение кода листинга программы
- В первой строке объявляются три переменные типа строка: a$, q$ и p$.
- Вторая строка запрашивает у пользователя ввод числа, которое нужно перевести.
- Третья строка запрашивает у пользователя ввод основания системы счисления, в которую нужно перевести число.
- Четвертая строка запрашивает у пользователя ввод коэффициента, на который нужно умножить число при переводе в следующую систему счисления.
- Пятая строка инициирует массив c(i) для хранения индексов соответствия цифр числа от 0 до 9 и букв A-F в системе счисления от 10 до 15.
- Шестая строка инициализирует строку u$ для хранения всех возможных символов в системе счисления от 0 до 9 и букв A-F.
- Седьмая строка начинает цикл перебора всех символов в числе a$.
- Восьмая строка проверяет, совпадает ли текущий символ числа a$ с текущим символом строки u$. Если да, то к текущему индексу символа в массиве c(i) добавляется разница между индексами символов в строках a$ и u$.
- Девятая строка начинает цикл перебора всех систем счисления от большего значения к меньшему.
- В каждой итерации цикла текущий индекс символа в массиве c(i) увеличивается на единицу, а значение переменной b увеличивается на произведение текущего индекса символа в массиве c(i) и значения переменной q, возведенного в степень r.
- После каждой итерации цикла значение переменной r увеличивается на единицу.
- Если значение переменной b превышает p, то остаток от деления значения переменной b на p добавляется к текущему значению переменной c$, а значение переменной b уменьшается на p.
- Цикл продолжается до тех пор, пока значение переменной b не станет равным нулю.
- В последней строке выводится значение переменной c$.