Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 23.10.2021
Сообщений: 62

Вычисление арифметических выражений внутри текста: умножение и деление

29.11.2021, 21:18. Показов 1126. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать программу для выполнения некоторых операций с текстом. Вводить текст не требуется, он должен быть задан в исходном тексте программы в виде списка строк (при выводе на экран каждый элемент этого списка должен начинаться с новой строки).
Вычисление арифметических выражений внутри текста: умножение и деление
функцию eval и регулярные выражения использовать нельзя.
Выражениями считаются операции по варианту над целыми числами, без изменения приоритетов с помощью скобок. Результат вычислений должен быть подставлен в текст вместо исходного выражения. Числа с арифметическими знаками могут быть разделены пробелами, или соединены вместе, например может быть так: 2*2/3*4 или может быть так: 2 * 2 / 3 * 4. также они могут быть присоединены к началу или концу какого то слова в тексте, например может быть так: привет2*2/3.
Помогите пожалуйста с такой задачей, идей как реализовать такую штуку нет совсем
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.11.2021, 21:18
Ответы с готовыми решениями:

Вычисление арифметических выражений
Здравствуйте. Нужна помощь в написании программы. Написать программу вычисления значения выражения С ++ h=(sin^2 z+cos2x )/(2x^5 +...

Вычисление арифметических выражений
Помогите пожалуйста, скорее всего у меня с вычислениями что-то не так =( #include <iostream> #include <cmath> using...

Вычисление арифметических выражений
4.2.2. Задание 1. Выбрать вариант задания из таблицы 4.2-1 по усмотрению преподавателя. 2. Решить задачу вычисления арифметических...

3
enx
 Аватар для enx
1190 / 766 / 277
Регистрация: 05.09.2021
Сообщений: 1,772
30.11.2021, 05:34
nikitalystsev, польская нотация.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
30.11.2021, 10:46
Цитата Сообщение от nikitalystsev Посмотреть сообщение
регулярные выражения использовать нельзя
Я так не играю
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38195 / 21128 / 4309
Регистрация: 12.02.2012
Сообщений: 34,734
Записей в блоге: 14
30.11.2021, 14:12
Python
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
from math import sin,cos,log,exp
 
def calc(formula):
    
    def parse(formula):
        res=[]
        tmp=''
        for s in formula:
            if s in (',','(',')','+','-','*','/','^'):
                if len(tmp)>0:
                    res.append(tmp)
                res.append(s)
                tmp=''
            else:
                tmp=tmp+s
        if len(tmp)>0:
            res.append(tmp)
        return res
        
    def prty_arn(op):
        ops=['(','+','-','*','/','^','sin','cos','log','exp']
        prt=[0,1,1,2,2,3,3,3,3,3]
        arn=[0,2,2,2,2,2,1,1,1,1]
        k=ops.index(op)
        return (prt[k],arn[k])
    
    def exec_op(op):
        
        (_,arn)=prty_arn(op)
        
        if arn==2:
            a2=stack_n.pop()
            a1=stack_n.pop()
        else:
            a1=stack_n.pop()
 
        if op=='+':
            return a1+a2
        elif op=='-':
            return a1-a2
        elif op=='*':
            return a1*a2
        elif op=='/':
            return a1/a2
        elif op=='^':
            return a1**a2
        elif op=='sin':
            return sin(a1)
        elif op=='cos':
            return cos(a1)
        elif op=='exp':
            return exp(a1)
        elif op=='log':
            return log(a1)
        return None
 
    arr_lex=parse(formula)
    stack_o=[]
    stack_n=[]
    
    for lex in arr_lex:
        
        if '9'>=lex[0]>='0':
            
            stack_n.append(float(lex))
            
        elif lex=='(':
            
            stack_o.append(lex)
            
        elif lex==')':
            
            while len(stack_o)>0:
                op=stack_o.pop()
                if op=='(':
                    break
                stack_n.append(exec_op(op))
            else:
                return (None,'Несбалансированы скобки-1')
 
        else:
            
            if len(stack_o)==0:
                stack_o.append(lex)
            else:
                
                (pn,_)=prty_arn(lex)
                (po,_)=prty_arn(stack_o[-1])
                
                if pn>po:
                    stack_o.append(lex)
                else:
                    while True:
                        op=stack_o.pop()
                        stack_n.append(exec_op(op))
                        if len(stack_o)==0 or stack_o[-1] != po:
                            break
                    stack_o.append(lex)
                    
    while len(stack_o)>0:
        op=stack_o.pop()
        stack_n.append(exec_op(op))
 
    if len(stack_n)==1:
        
        return (stack_n[0],'OK')
        
    else:
        
        return (None,'Несбалансированы скобки-2')
 
####################################################
 
print(calc("5+7-sin(7*3)"))
print(eval("5+7-sin(7*3)"))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.11.2021, 14:12
Помогаю со студенческими работами здесь

Вычисление арифметических выражений
Помогите пожалуйста с задачами в паскаль. 1.Алгоритмы линейной структуры .Вычисление арифметических выражений ...

Вычисление арифметических выражений
очень нужны две эти программы. сама честно пробовала написать обе. как-то не очень получается, сложновато это пока для меня 1....

Вычисление арифметических выражений
Здраствуйте. Меня волнует такой вопрос по С++ - вот я к примеру хочу вычислить какое-нибудь арифметическое выражение с переменными x, y, z....

Вычисление арифметических выражений
ЦЕЛЬ РАБОТЫ. Вычислить заданное смешанное арифметическое выражение для данных в форматах REAL (переменные a,b) и INTEGER (остальные...

Вычисление арифметических выражений
Написать программу на языке программирования Assembler процессора х86 для вычисления значения заданного арифметического выражения: (d - c)...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru