Найти максимальное значение функции - QBasic

Узнай цену своей работы

Формулировка задачи:

Задается функция, определенная на натуральных числах интервал на котором ищется ее максимальное значение (1; 1000) теперь определение самой функции: (лучше приведу на примере) дано число 12. значение функции от этого числа sin1 + sin2 + sin3 + sin4 + sin6 (все числа делители числа 12) другой пример (число 13) значение функции: sin1 (всё, других делителей числа 13 нет) (само число не считается делителем самого себя) ... Программа посчитала и нашла максимум 6.589797 в точке 832 Вопросы 1. Есть ли иное решение? 2. Что может дать массив? 3. Ваше мнение?
Листинг программы
  1. REM
  2. REM MAX = 6.589797
  3. REM
  4. REM Imax = 832
  5. REM
  6. DECLARE FUNCTION f! (n!)
  7. CLS
  8. n = 1000
  9. FOR i = 1 TO n
  10. y = f(i)
  11. IF max < y THEN
  12. max = y
  13. im = i
  14. END IF
  15. NEXT
  16. PRINT "MAX ="; max
  17. PRINT "Imax ="; im
  18. END
  19. FUNCTION f (n)
  20. FOR i = 1 TO n \ 2
  21. IF n MOD i = 0 THEN
  22. S = S + SIN(i)
  23. END IF
  24. NEXT
  25. f = S
  26. END FUNCTION

Решение задачи: «Найти максимальное значение функции»

textual
Листинг программы
  1. DIM s(1 TO 500) AS DOUBLE, sm AS DOUBLE, mx AS DOUBLE, i AS LONG, j AS LONG, n AS LONG, im AS LONG
  2. n = 1000
  3. FOR i = 1 TO n \ 2
  4.     s(i) = SIN(i)
  5. NEXT i
  6. FOR i = 1 TO n
  7.     sm = s(1)
  8.     FOR j = 2 TO SQR(i)
  9.         IF i MOD j = 0 THEN
  10.             sm = sm + s(j)
  11.             IF j * j <> i THEN sm = sm + s(i \ j)
  12.         END IF
  13.     NEXT j
  14.     IF sm > mx OR i = 1 THEN mx = sm: im = i
  15. NEXT i
  16. PRINT mx, im

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

  1. Объявляются переменные: — s(1 TO 500) AS DOUBLE — массив s с 500 элементами типа double, инициализированный нулями; — sm AS DOUBLE — переменная sm типа double, инициализированная нулём; — mx AS DOUBLE — переменная mx типа double, инициализированная нулём; — i AS LONG — переменная i типа long, инициализированная единицей; — j AS LONG — переменная j типа long, инициализированная единицей; — n AS LONG — переменная n типа long, инициализированная тысячей.
  2. Вычисляется значение переменной n: n = 1000.
  3. Заполняется массив s: FOR i%=1 TO n \ 2% s(i%) = SIN(i%). NEXT i%
  4. Находится максимальное значение среди элементов массива s: FOR i%=1 TO n% sm = s(1)% FOR j%=2 TO SQR(i%) IF i% MOD j% = 0 THEN sm = sm + s(j%) IF j% * j% <> i% THEN sm = sm + s(i% \ j%) END IF NEXT j% IF sm > mx OR i% = 1 THEN mx = sm: im = i% NEXT i%
  5. Выводятся найденные значения: PRINT mx, im.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

10   голосов , оценка 3.9 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут