Задача
Задается случайное семизначное число. В этом числе две не крайние и не рядом стоящие цифры заменяются на два знака +. То есть образуется арифметическое выражение, означающее, что надо сложить три числа. Надо определить куда поставить эти два знака +, чтобы сумма имела минимальное значение.
Вывести на экран:
1) исходное число
2) арифметическое выражение
3) минимум
Вопросы
1. Есть ли иное решение этой задачи?
2. Поможет ли здесь массив? И как?
3. Как решить эту задачу, если и число будет вдвое длиннее и знаков + вдвое больше?
4. Что можно посоветовать, если длина числа будет неопределенной величиной?
Код:
CLS
RANDOMIZE TIMER
DIM ns AS STRING
DIM ns2 AS STRING
n = 1000000 + 9000000 * RND
ns = LTRIM$(STR$(n))
min = 1017
FOR i = 2 TO 4
FOR j = i + 2 TO 6
a = VAL(LEFT$(ns, i - 1))
b = VAL(MID$(ns, i + 1, j - 1 - i))
c = VAL(MID$(ns, j + 1))
d = a + b + c
IF d < min THEN
min = d
ns2 = ns
MID$(ns2, i, 1) = "+"
MID$(ns2, j, 1) = "+"
END IF
NEXT j, i
PRINT ns
PRINT ns2
PRINT "MIN ="; min
END