Найти максимум из множества чисел - QBasic
Формулировка задачи:
Дано множество из 1024 чисел.
Числа имеют вид sin(cos(cos(.....sin(1)...)) или ему подобный
То есть всего 10 функций. Либо sin, либо cos. Икс везде = 1
Надо на этом множестве найти максимальное число и вывести
на экран. А также в кратком условном виде вывести само число
(У меня sin=1, а cos=0 и число может иметь вид 1000111010)
Вопрос
Если вы посмотрите код, то там много ПОХОЖЕГО КОДА.
Нельзя ли как-то "укоротить" программу?
Листинг программы
- REM
- REM y=SIN(COS(....COS(1)...))
- REM max = 0.9206205
- REM
- DECLARE FUNCTION T$ (n!)
- CLS
- DIM im AS STRING
- FOR i0 = 0 TO 1
- FOR i1 = 0 TO 1
- FOR i2 = 0 TO 1
- FOR i3 = 0 TO 1
- FOR i4 = 0 TO 1
- FOR i5 = 0 TO 1
- FOR i6 = 0 TO 1
- FOR i7 = 0 TO 1
- FOR i8 = 0 TO 1
- FOR i9 = 0 TO 1
- x = 1
- IF i9 THEN x = SIN(x) ELSE x = COS(x)
- IF i8 THEN x = SIN(x) ELSE x = COS(x)
- IF i7 THEN x = SIN(x) ELSE x = COS(x)
- IF i6 THEN x = SIN(x) ELSE x = COS(x)
- IF i5 THEN x = SIN(x) ELSE x = COS(x)
- IF i4 THEN x = SIN(x) ELSE x = COS(x)
- IF i3 THEN x = SIN(x) ELSE x = COS(x)
- IF i2 THEN x = SIN(x) ELSE x = COS(x)
- IF i1 THEN x = SIN(x) ELSE x = COS(x)
- IF i0 THEN x = SIN(x) ELSE x = COS(x)
- IF x > max THEN
- max = x
- im = T(i0) + T(i1) + T(i2) + T(i3)
- im = im + T(i4) + T(i5) + T(i6)
- im = im + T(i7) + T(i8) + T(i9)
- END IF
- NEXT i9, i8, i7, i6, i5, i4, i3, i2, i1, i0
- PRINT "MAX ="; max
- PRINT im
- END
- FUNCTION T$ (n)
- T = LTRIM$(STR$(n))
- END FUNCTION
Решение задачи: «Найти максимум из множества чисел»
textual
Листинг программы
- DIM i AS LONG, j AS LONG, n AS LONG
- DIM x AS DOUBLE, mx AS DOUBLE, s AS STRING, ms AS STRING
- FOR i = 0 TO 1023
- n = i
- x = 1
- s = ""
- FOR j = 0 TO 9
- IF n MOD 2 THEN x = SIN(x) ELSE x = COS(x)
- s = s + LTRIM$(STR$(n MOD 2))
- n = n \ 2
- NEXT j
- IF x > mx THEN
- mx = x
- ms = s
- END IF
- NEXT i
- PRINT mx, ms
Объяснение кода листинга программы
Перед нами цикл, который совершает следующие действия:
- Создаёт три переменные: i, j, n (номер строки, номер столбца, числовое значение).
- Создаёт три другие переменные: x, mx, s (значение синуса, максимальное значение, строковое значение).
- Запускает цикл от 0 до 1023 (включительно).
- Внутри этого цикла есть другой цикл, который идёт от 0 до 9 (включительно).
- Внутренний цикл проверяет, является ли число чётным.
- Если число чётное, то к переменной x применяется функция синуса, если нечётное — косинуса.
- В каждую строку вперемешку добавляются цифры числа, полученного после проверки на чётность (добавляются все цифры, а не только те, которые соответствуют чётности или нечётности).
- После добавления всех цифр число делится на 2.
- Если полученное значение x больше максимального значения, то обновляются значения переменных mx и s.
- После завершения внешнего цикла выводятся значения переменных mx и s.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д