Найти максимум из множества чисел - QBasic

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

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

Дано множество из 1024 чисел. Числа имеют вид sin(cos(cos(.....sin(1)...)) или ему подобный То есть всего 10 функций. Либо sin, либо cos. Икс везде = 1 Надо на этом множестве найти максимальное число и вывести на экран. А также в кратком условном виде вывести само число (У меня sin=1, а cos=0 и число может иметь вид 1000111010) Вопрос Если вы посмотрите код, то там много ПОХОЖЕГО КОДА. Нельзя ли как-то "укоротить" программу?
Листинг программы
  1. REM
  2. REM y=SIN(COS(....COS(1)...))
  3. REM max = 0.9206205
  4. REM
  5. DECLARE FUNCTION T$ (n!)
  6. CLS
  7. DIM im AS STRING
  8. FOR i0 = 0 TO 1
  9. FOR i1 = 0 TO 1
  10. FOR i2 = 0 TO 1
  11. FOR i3 = 0 TO 1
  12. FOR i4 = 0 TO 1
  13. FOR i5 = 0 TO 1
  14. FOR i6 = 0 TO 1
  15. FOR i7 = 0 TO 1
  16. FOR i8 = 0 TO 1
  17. FOR i9 = 0 TO 1
  18. x = 1
  19. IF i9 THEN x = SIN(x) ELSE x = COS(x)
  20. IF i8 THEN x = SIN(x) ELSE x = COS(x)
  21. IF i7 THEN x = SIN(x) ELSE x = COS(x)
  22. IF i6 THEN x = SIN(x) ELSE x = COS(x)
  23. IF i5 THEN x = SIN(x) ELSE x = COS(x)
  24. IF i4 THEN x = SIN(x) ELSE x = COS(x)
  25. IF i3 THEN x = SIN(x) ELSE x = COS(x)
  26. IF i2 THEN x = SIN(x) ELSE x = COS(x)
  27. IF i1 THEN x = SIN(x) ELSE x = COS(x)
  28. IF i0 THEN x = SIN(x) ELSE x = COS(x)
  29. IF x > max THEN
  30. max = x
  31. im = T(i0) + T(i1) + T(i2) + T(i3)
  32. im = im + T(i4) + T(i5) + T(i6)
  33. im = im + T(i7) + T(i8) + T(i9)
  34. END IF
  35. NEXT i9, i8, i7, i6, i5, i4, i3, i2, i1, i0
  36. PRINT "MAX ="; max
  37. PRINT im
  38. END
  39. FUNCTION T$ (n)
  40. T = LTRIM$(STR$(n))
  41. END FUNCTION

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

textual
Листинг программы
  1. DIM i AS LONG, j AS LONG, n AS LONG
  2. DIM x AS DOUBLE, mx AS DOUBLE, s AS STRING, ms  AS STRING
  3. FOR i = 0 TO 1023
  4.     n = i
  5.     x = 1
  6.     s = ""
  7.     FOR j = 0 TO 9
  8.         IF n MOD 2 THEN x = SIN(x) ELSE x = COS(x)
  9.         s = s + LTRIM$(STR$(n MOD 2))
  10.         n = n \ 2
  11.     NEXT j
  12.     IF x > mx THEN
  13.         mx = x
  14.         ms = s
  15.     END IF
  16. NEXT i
  17. PRINT mx, ms

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

Перед нами цикл, который совершает следующие действия:

  1. Создаёт три переменные: i, j, n (номер строки, номер столбца, числовое значение).
  2. Создаёт три другие переменные: x, mx, s (значение синуса, максимальное значение, строковое значение).
  3. Запускает цикл от 0 до 1023 (включительно).
  4. Внутри этого цикла есть другой цикл, который идёт от 0 до 9 (включительно).
  5. Внутренний цикл проверяет, является ли число чётным.
  6. Если число чётное, то к переменной x применяется функция синуса, если нечётное — косинуса.
  7. В каждую строку вперемешку добавляются цифры числа, полученного после проверки на чётность (добавляются все цифры, а не только те, которые соответствуют чётности или нечётности).
  8. После добавления всех цифр число делится на 2.
  9. Если полученное значение x больше максимального значения, то обновляются значения переменных mx и s.
  10. После завершения внешнего цикла выводятся значения переменных mx и s.

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


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

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

6   голосов , оценка 4.167 из 5

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

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

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