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

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

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

Author24 — интернет-сервис помощи студентам
Дано число 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.02.2017, 11:54
Ответы с готовыми решениями:

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

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

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

Дана строка, изображающая арифметическое выражение. Найти значение выражения
дана строка, изображающая арифмитическое вырожение вида...

2
1287 / 880 / 254
Регистрация: 30.06.2015
Сообщений: 4,592
Записей в блоге: 51
07.02.2017, 17:20 2
echs, - зачем плодить темы с похожими задачками? Не лучше ли однотипные задачи скидывать в одну тему? Вы же так делали с рекурсивными задачами.
1
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
07.02.2017, 19:12  [ТС] 3
CoderHuligan
Есть правило. Одна задача - одна тема. В принципе
я не против вашего предложения. НО тут есть одно НО.
Я лично не стал бы решать подобное множество задач
у кого-либо в теме.
А что рекурсия? Просто примеры решения известных
задач методами рекурсии. В той теме я вообще никого
ни о чем не спрашивал, а просто выкладывал решения.
А здесь я хоть ожидаю какой-либо реакции...
1
07.02.2017, 19:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.02.2017, 19:12
Помогаю со студенческими работами здесь

Добавить числа в скобочное выражение, чтобы получилось правильное арифметическое выражение
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
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru