Вычислите произведение двух чисел: x и y, в десятичной системе счисления - QBasic
Формулировка задачи:
Возможны ли решения на Вейсике для следующих задач. Если да, помогите.
Задача №1 2 балла
Вычислите произведение двух чисел: x и y, если x=10100,00112, y=2016. В ответе укажите результат в десятичной системе счисления.
Ответить »
Решение задачи: «Вычислите произведение двух чисел: x и y, в десятичной системе счисления»
textual
Листинг программы
CLS
PRINT f("10100.0011", 2) * f("20", 16)
FUNCTION f (a$, q)
u$ = "0123456789ABCDEF"
k = INSTR(a$, ".")
r = (LEN(a$) - k) * (k <> 0)
a$ = MID$(a$, 1, k - 1) + MID$(a$, k + 1, LEN(a$) - k)
FOR i = LEN(a$) TO 1 STEP -1
j = INSTR(u$, UCASE$(MID$(a$, i, 1))) - 1
res = res + j * q ^ r
r = r + 1
NEXT
f = res
END FUNCTION
Объяснение кода листинга программы
CLS— очистка экранаPRINT f(10100.0011, 2) * f(20, 16)— вывод произведения двух чисел, переданных в функциюfFUNCTION f (a$, q)— определение функцииf, принимающей два аргумента типа строка (a$) и целое число (q)u$ =0123456789ABCDEF` — инициализация строкиu$` для представления шестнадцатеричной системы счисленияk = INSTR(a$,.)— поиск позиции десятичной точки в строкеa$r = (LEN(a$) — k) * (k <> 0)— вычисление значения переменнойr, представляющей мощность десятичной точки в числеa$a$ = MID$(a$, 1, k — 1) + MID$(a$, k + 1, LEN(a$) — k)— разделение строкиa$на числитель и знаменательFOR i = LEN(a$) TO 1 STEP -1— итерация от последнего символа строкиa$к первомуj = INSTR(u$, UCASE$(MID$(a$, i, 1))) — 1— поиск позиции символа в строкеu$, представляющего шестнадцатеричный эквивалент символа из строкиa$res = res + j * q ^ r— обновление значения переменнойres, представляющей результат вычисления функцииfr = r + 1— обновление значения переменнойrNEXT— завершение циклаf = res— присвоение переменнойfзначения, вычисленного в циклеEND FUNCTION— завершение определения функцииf