Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/29: Рейтинг темы: голосов - 29, средняя оценка - 4.52
 Аватар для Senoki
6 / 6 / 0
Регистрация: 24.09.2021
Сообщений: 125

Задача №1913. Значение арифметического выражения

02.05.2022, 20:40. Показов 6389. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задано числовое выражение. Необходимо вычислить его значение или установить, что оно содержит ошибку. В выражении могут встречаться знаки сложения, вычитания, умножения, скобки и пробелы (пробелов внутри чисел быть не должно). Приоритет операций стандартный. Все числа в выражении целые и по модулю не превосходят 2∗109. Также гарантируется, что все промежуточные вычисления умещаются в этот тип.
Примеры
входные данные
1+(2*2 - 3)
выходные данные
2

входные данные
1+a+1
выходные данные
WRONG

входные данные
1 1 + 2
выходные данные
WRONG
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.05.2022, 20:40
Ответы с готовыми решениями:

Значение арифметического выражения
Значение арифметического выражения: 918 + 354 – 9 — записали в системе счисления с основанием 3. Сколько цифр «2» содержится в этой записи?...

вычисляет значение арифметического выражения, записанного в префиксной форме
Напишите программу, которая вычисляет значение арифметического выражения, записанного в префиксной форме. Выражение вводится с клавиатуры в...

Вычислить значение арифметического выражения, записанного в виде символьной строки
Напишите программу, которая вычисляет значение арифметического выражения, записанного в виде символьной строки. В выражении используются...

2
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
02.05.2022, 21:35
Senoki,
Python
1
2
3
4
5
s = input()
try:
    print(eval(s))
except:
    print('WRONG')
2
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
03.05.2022, 14:13
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
from random import choice, choices, randint
#==============================================================================
def get_val(s):
    #==========================================================================
    def calc( nums, ops ):
        while '*' in ops:
            mul_ind = ops.index('*')
            nums[mul_ind + 1] *= nums[mul_ind]
            ops.pop(mul_ind)
            nums.pop(mul_ind)
        res = nums.pop(0)
        for i in range( len(nums) ):
            match ops[i]:
                case '+':
                    res += nums[i]
                case '-':
                    res -= nums[i]
        return res
    # ==========================================================================
    def get_r_par_ind(s, ind):
        if ind >= len(s):
            return 'WRONG'
        st = ['(']
        for i in range( ind+1, len(s) ):
            if s[i] == '(':
                st.append('(')
            elif s[i] == ')':
                st.pop()
                if not st:
                    return i
        return 'WRONG'
    # ==========================================================================
    def get_num(s, ind):
        if ind >= len(s):
            return 'WRONG', 0
        if s[ind] == '(':
            ind_r = get_r_par_ind(s, ind+1)
            if ind_r == 'WRONG':
                return 'WRONG', 0
            else:
                return get_val( s[ind+1:ind_r] ), ind_r+1
        elif s[ind] == '-':
            num, ind = get_num(s, ind+1)
            if num == 'WRONG':
                return 'WRONG', 0
            return -num, ind
        elif s[ind] == '+':
            return get_num(s, ind+1)
        elif s[ind].isdigit():
            i = ind+1
            while i < len(s) and s[i].isdigit():
                i += 1
            return int( s[ind:i] ), i
        else:
            return 'WRONG', 0
    # ==========================================================================
    def get_op(s, ind):
        if ind >= len(s):
            return 'WRONG', 0
        if s[ind] in '+-*':
            return s[ind], ind+1
        else:
            return 'WRONG', 0
    # ==========================================================================
    i = 0
    nums = []
    ops  = []
    while i < len(s):
        num, i = get_num(s, i)
        if num == 'WRONG':
            return 'WRONG'
        nums.append( num )
        if i >= len(s):
            break
        op, i = get_op(s, i)
        if op == 'WRONG':
            return 'WRONG'
        ops.append( op )
    if not nums or len(nums) != len(ops) + 1:
        return 'WRONG'
    return calc( nums, ops )
#==============================================================================
def gen_rand_expr():
    return ''.join( choices( '1234567890()()()()()()()()+++---*****', k=15 ) )
# ==============================================================================
while True:
    print_wrong = int( choice('1000') )
    while True:
        s   = gen_rand_expr()
        val = get_val(s)
        if (val == 'WRONG') == print_wrong:
            break
    print( f'{s} = {val}' )
    print()
    input('Нажмите Enter и ждите -> ')
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.05.2022, 14:13
Помогаю со студенческими работами здесь

Значение арифметического выражения: 64^30 + 2^300 – 4 записали в системе счисления с основанием 8. Сколько цифр «7»?
Значение арифметического выражения: 64^30 + 2^300– 4 записали в системе счисления с основанием 8. Сколько цифр «7» в этой записи?

Определите наименьшее значение х , при котором значение данного арифметического выражения кратно 13
Дано арифметическое выражение: 3x15x15+1233x51+xx+1x31x3+1x2x+1 в записи чисел переменной х обозначена неизвестная цифра. Определите...

Вычислить значение арифметического выражения записанного в постфиксной форме
Всем привет. Есть задача на информатиксе: Напишите программу, которая вычисляет значение арифметического выражения, записанного в...

Значение арифметического выражения записали в системе счисления с основанием 3
Значение арифметического выражения: 9^11 · 3^20 − 3^9 − 27 — записали в системе счисления с основанием 3. Сколько цифр 2 содержится в...

Задача: составление арифметического выражения
Необходимо написать программу, которая бы принимала входящий параметр LEVEL от 1 до 5. Взависимости от LEVEL генерировала бы арифметические...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru