Технический форум

Технический форум (http://www.tehnari.ru/index.php)
-   Basic (http://www.tehnari.ru/forumdisplay.php?f=127)
-   -   Вычислить необычный минимум (http://www.tehnari.ru/showthread.php?t=249572)

iks2 25.10.2016 12:03

Вычислить необычный минимум
 
Задача
Задается случайное семизначное число. В этом числе две не крайние и не рядом стоящие цифры заменяются на два знака +. То есть образуется арифметическое выражение, означающее, что надо сложить три числа. Надо определить куда поставить эти два знака +, чтобы сумма имела минимальное значение.
Вывести на экран:
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



Часовой пояс GMT +4, время: 05:03.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.