• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Вычислить необычный минимум

  • Автор темы Автор темы iks2
  • Дата начала Дата начала

iks2

Новые
Регистрация
22 Окт 2016
Сообщения
62
Реакции
0
Баллы
0
Вычислить необычный минимум

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