Найти максимум числового выражения - 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

Объяснение кода листинга программы

  1. Создаются переменные: mx, i, j, s, s1, s2, t
  2. Переменной t присваивается значение Timer (время начала выполнения программы)
  3. Переменной mx присваивается значение выражения Sin(1) * Sin(2)
  4. Запускается цикл от 1 до 10000
  5. Внутри цикла переменная s1 суммирует значения функции Sin(i)
  6. Переменная s2 инициализируется как 0
  7. Внутренний цикл от 1 до i-1 выполняет суммирование значений функции Sin(j) и обновляет значение переменной s2
  8. Если произведение s2*(s1-s2) больше текущего максимального значения mx, то обновляется значение mx
  9. По завершению внутреннего цикла, цикл for i продолжается
  10. По завершению цикла for i выводится значение переменной mx и разница между текущим временем и временем начала выполнения программы (t)

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы