Форум программистов, компьютерный форум, киберфорум
QBasic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8

Найти арифметическое выражение 3

07.02.2017, 11:54. Показов 1712. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дано число 123456789. Надо вставить между цифр
шесть арифметических операций либо +, либо -
так, чтобы в результате получилось число 100.
(программа нашла 7 решений, я привожу одно, остальные
сами найдете, если запустите эту программу)

QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
REM
REM  123456789
REM
REM  1 + 2 + 34 - 5 + 67 - 8 + 9 = 100
REM
 
DECLARE FUNCTION f! (A AS STRING)
 
CLS
CONST p = " "
DIM A AS STRING
DIM B AS STRING
B = "1 2 3 4 5 6 7 8 9"
 
 
FOR i1 = -1 TO 1
FOR i2 = -1 TO 1
FOR i3 = -1 TO 1
FOR i4 = -1 TO 1
FOR i5 = -1 TO 1
FOR i6 = -1 TO 1
FOR i7 = -1 TO 1
FOR i8 = -1 TO 1
   n = 0
   A = B
   n = n + ABS(i1) + ABS(i2) + ABS(i3) + ABS(i4)
   n = n + ABS(i5) + ABS(i6) + ABS(i7) + ABS(i8)
 
   IF n = 6 THEN
      k = 0
      IF i1 > 0 THEN MID$(A, 2, 1) = "+": k = k + 1
      IF i1 < 0 THEN MID$(A, 2, 1) = "-": k = k + 1
      IF i2 > 0 THEN MID$(A, 4, 1) = "+": k = k + 1
      IF i2 < 0 THEN MID$(A, 4, 1) = "-": k = k + 1
      IF i3 > 0 THEN MID$(A, 6, 1) = "+": k = k + 1
      IF i3 < 0 THEN MID$(A, 6, 1) = "-": k = k + 1
      IF i4 > 0 THEN MID$(A, 8, 1) = "+": k = k + 1
      IF i4 < 0 THEN MID$(A, 8, 1) = "-": k = k + 1
      IF i5 > 0 THEN MID$(A, 10, 1) = "+": k = k + 1
      IF i5 < 0 THEN MID$(A, 10, 1) = "-": k = k + 1
      IF i6 > 0 THEN MID$(A, 12, 1) = "+": k = k + 1
      IF i6 < 0 THEN MID$(A, 12, 1) = "-": k = k + 1
      IF i7 > 0 AND k < 6 THEN MID$(A, 14, 1) = "+": k = k + 1
      IF i7 < 0 AND k < 6 THEN MID$(A, 14, 1) = "-": k = k + 1
      IF i8 > 0 AND k < 6 THEN MID$(A, 16, 1) = "+": k = k + 1
      IF i8 < 0 AND k < 6 THEN MID$(A, 16, 1) = "-": k = k + 1
 
      IF f(A) = 100 THEN PRINT A
   END IF
NEXT i8, i7, i6, i5, i4, i3, i2, i1
 
END
 
FUNCTION f (A AS STRING)
   DIM B AS STRING
  
   DO WHILE INSTR(A, p)
      k = INSTR(A, p)
      A = LEFT$(A, k - 1) + MID$(A, k + 1)
   LOOP
 
   FOR i = 2 TO 14
      B = MID$(A, i, 1)
      IF INSTR("+-", B) THEN
         IF n1 = 0 THEN n1 = i: GOTO 100
         IF n2 = 0 THEN n2 = i: GOTO 100
         IF n3 = 0 THEN n3 = i: GOTO 100
         IF n4 = 0 THEN n4 = i: GOTO 100
         IF n5 = 0 THEN n5 = i: GOTO 100
         IF n6 = 0 THEN n6 = i: GOTO 100
      END IF
100
   NEXT
 
   s1 = VAL(A)
   s2 = VAL(MID$(A, n1 + 1, n2 - n1 - 1))
   s3 = VAL(MID$(A, n2 + 1, n3 - n2 - 1))
   s4 = VAL(MID$(A, n3 + 1, n4 - n3 - 1))
   s5 = VAL(MID$(A, n4 + 1, n5 - n4 - 1))
   s6 = VAL(MID$(A, n5 + 1, n6 - n5 - 1))
   s7 = VAL(MID$(A, n6 + 1))
   
   B = MID$(A, n1, 1)
   IF B = "+" THEN S = s1 + s2 ELSE S = s1 - s2
   B = MID$(A, n2, 1)
   IF B = "+" THEN S = S + s3 ELSE S = S - s3
   B = MID$(A, n3, 1)
   IF B = "+" THEN S = S + s4 ELSE S = S - s4
   B = MID$(A, n4, 1)
   IF B = "+" THEN S = S + s5 ELSE S = S - s5
   B = MID$(A, n5, 1)
   IF B = "+" THEN S = S + s6 ELSE S = S - s6
   B = MID$(A, n6, 1)
   IF B = "+" THEN S = S + s7 ELSE S = S - s7
 
   f = S
END FUNCTION
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.02.2017, 11:54
Ответы с готовыми решениями:

Найти арифметическое выражение
Задано число 123456789. Надо вставить между цифр три знака арифметических операций либо +, либо - так, чтобы после вычисления этого...

арифметическое выражение
найти значение выражения

Найти выражение по условию
Уважаемые форумчане! Подскажите пожалуйста, может ли быть такое задание. (У меня ощущение, что я его не полностью переписала) Дан...

2
 Аватар для CoderHuligan
1744 / 1009 / 257
Регистрация: 30.06.2015
Сообщений: 5,118
Записей в блоге: 56
07.02.2017, 17:20
echs, - зачем плодить темы с похожими задачками? Не лучше ли однотипные задачи скидывать в одну тему? Вы же так делали с рекурсивными задачами.
1
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
07.02.2017, 19:12  [ТС]
CoderHuligan
Есть правило. Одна задача - одна тема. В принципе
я не против вашего предложения. НО тут есть одно НО.
Я лично не стал бы решать подобное множество задач
у кого-либо в теме.
А что рекурсия? Просто примеры решения известных
задач методами рекурсии. В той теме я вообще никого
ни о чем не спрашивал, а просто выкладывал решения.
А здесь я хоть ожидаю какой-либо реакции...
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.02.2017, 19:12
Помогаю со студенческими работами здесь

Дана строка, изображающая арифметическое выражение. Найти значение выражения
дана строка, изображающая арифмитическое вырожение вида &quot;&lt;число&gt;+или-&lt;число&gt;+или-&lt;число&gt;+или-.....&lt;число&gt;+или-&gt;&quot; где на...

Добавить числа в скобочное выражение, чтобы получилось правильное арифметическое выражение
1.Дана последовательность из N круглых, квадратных и фигурных скобок. Выяснить, можно ли добавить в неё цифры и знаки арифметических...

Арифметическое выражение
x^2-3y/√(3+y)

Арифметическое выражение
x^2-3y/√(x+y)

Арифметическое выражение
перевести арифметическое выражение y={sin}^{4}*tg{x}^{3}/2/cos{x}^{3}-1+\^{3}sqrt{tg{x}^{3}/3} на язык Паскаль. Перевела,только...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru