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

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

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

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


СОХРАНИТЬ ССЫЛКУ