Найти максимум числового выражения - QBasic
Формулировка задачи:
Задано числовое выражение
(sin1 + ... + sin(k)) * (sin(k+1) + ... + sin(n))
в двух скобках проставлены суммы синусов от чисел
натурального ряда. Всего чисел 100 и они расположены
в порядке возрастания от 1 до 100. Однако сколько этих
чисел в каждой скобке неизвестно. может 1, а может 99
Надо вычислить максимум независимо от N. 1 < N <=100
Вопросы
1. Есть ли иное решение?
2. Можно ли улучшить мою программу?
3. Кажется здесь можно использовать рекурсию?
например по количеству синусов во второй скобке?
Решение задачи: «Найти максимум числового выражения»
textual
Листинг программы
Sub test1() Dim mx As Double, i As Long, j As Long, s As Double, s1 As Double, s2 As Double, t As Single t = Timer mx = Sin(1) * Sin(2) For i = 1 To 10000 s1 = s1 + Sin(i) s2 = 0 For j = 1 To i - 1 s2 = s2 + Sin(j) If s2 * (s1 - s2) > mx Then mx = s2 * (s1 - s2) Next j, i Debug.Print mx, Timer - t End Sub
Объяснение кода листинга программы
- Создаются переменные: mx, i, j, s, s1, s2, t
- Переменной t присваивается значение Timer (время начала выполнения программы)
- Переменной mx присваивается значение выражения Sin(1) * Sin(2)
- Запускается цикл от 1 до 10000
- Внутри цикла переменная s1 суммирует значения функции Sin(i)
- Переменная s2 инициализируется как 0
- Внутренний цикл от 1 до i-1 выполняет суммирование значений функции Sin(j) и обновляет значение переменной s2
- Если произведение s2*(s1-s2) больше текущего максимального значения mx, то обновляется значение mx
- По завершению внутреннего цикла, цикл for i продолжается
- По завершению цикла for i выводится значение переменной mx и разница между текущим временем и временем начала выполнения программы (t)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д