Найти два числа, среднее арифметическое которых ближе к А - QBasic
Формулировка задачи:
Даны действительные числа А и b(1), b(2),....,b(m).В последовательности b(j) найти два числа, среднее арифметическое которых ближе к А.
Помогите пожалуйста. Срочно надо!
Решение задачи: «Найти два числа, среднее арифметическое которых ближе к А»
textual
Листинг программы
CLS
RANDOMIZE TIMER
m = 20
A = 77
DIM B(1 TO m)
FOR i = 1 TO m
B(i) = 100 * RND + 20
PRINT USING "###.## "; B(i);
NEXT i
min = 100
FOR i = 1 TO m - 1
FOR j = i + 1 TO m
SA = (B(i) + B(j)) / 2
IF ABS(A - SA) < min THEN
min = ABS(A - SA)
im = i
jm = j
END IF
NEXT j, i
PRINT : PRINT
PRINT "B("; im; ") ="; B(im)
PRINT "B("; jm; ") ="; B(jm)
PRINT
PRINT "SA ="; (B(im) + B(jm)) / 2
PRINT "A ="; A
END
Объяснение кода листинга программы
- В первой строке используется команда CLS для очистки экрана.
- RANDOMIZE TIMER используется для случайной генерации чисел.
- Переменная m устанавливает количество сгенерированных чисел, равное 20.
- Переменная A устанавливает искомое среднее арифметическое на 77.
- Создается массив B(1 TO m) для хранения сгенерированных чисел.
- Используется цикл FOR для генерации 20 случайных чисел и их печати.
- Устанавливается начальное значение переменной min равное 100.
- Используется вложенный цикл FOR для нахождения двух чисел, среднее арифметическое которых ближе всего к переменной A.
- Внутри вложенного цикла определяется значение переменной SA как среднее арифметическое двух текущих чисел.
- Если разница между переменной A и SA меньше текущего значения переменной min, то обновляются значения переменных min, im и jm.
- После окончания вложенного цикла, выводятся значения переменных im и jm, которые содержат индексы двух чисел, среднее арифметическое которых ближе всего к переменной A.
- Вычисляется и выводится значение переменной SA как среднее арифметическое двух чисел с индексами im и jm.
- Выводится значение переменной A.
- Код завершается командой END.