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

Уравнение

15.01.2021, 12:19. Показов 4094. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ваша задача - решить уравнение с одним неизвестным х.
Уравнение состоит из +, -, x и целых чисел.
Будет один единственный знак =.
Знак плюс и равенство никогда не ставится в начале и в конце уравнения. Аналогично знак минус никогда не помещается в конец уравнения.

Некоторые пары знаков никогда не помещаются один за другим:

* плюс за плюсом*
* плюс после минуса
* минус после минуса
* минус после плюса
* x после x*
* плюс после равно *
* равно после плюса

Формат ввода:
Первая строка ввода состоит из одного целого числа Z, которое будет указывать на количество тестовых случаев.
Каждая из следующих N строк состоит из строки si - уравнения.

Формат вывода:
Для каждого тестового случая необходимо в отдельной строке задать одно число, решение заданного уравнения. В качестве альтернативы Вы должны предоставить одно слово NO, если нет решения или есть несколько решений.

Ответы будут проверены с точностью до 0,001.

Sample Input:
2
24-x+3x-2x=16-x
16-4x+2x-12=-2x+10

Sample Output:
-8
NO
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.01.2021, 12:19
Ответы с готовыми решениями:

Уравнение
Дано уравнение вида Ax+By=C A,B,C-положительные целые числа. x и y неотрицательные неизвестные числа Нужно написать программу,...

Задача уравнение

Линейное уравнение ax = b
на питоне Решить линейное уравнение ax=b Заданы три точки A(x1y1), B(x2,y2), C(x3,y3). Определить какая из точек наиболее...

26
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
15.01.2021, 14:02
LInnnn, с чем возникли сложности?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38180 / 21115 / 4307
Регистрация: 12.02.2012
Сообщений: 34,722
Записей в блоге: 14
15.01.2021, 16:34
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
def simplify(stri):
    a=0
    b=0
    p=1
    r=0
    for c in stri:
        if c.isdigit():
            r=r*10+int(c)
        elif c=='x':
            if r==0:
                a=p
            else:
                a+=r*p
            p=1
            r=0
        elif c=='+':
            b+=r*p
            p=1
            r=0
        elif c=='-':
            b+=r*p
            p=-1
            r=0
    if (r !=0):
        b+=r*p
    return (a,b)   
    
def solve(stri):
    p=stri.find("=")
    left=simplify(stri[0:p])
    right=simplify(stri[p+1:])
    (a,b)=(left[0]-right[0],left[1]-right[1])
    if a==0:
        print("NO")
    else:
        print(-b/a)
        
n=int(input())
for i in range(n):
    solve(input())
1
15.01.2021, 16:36

Не по теме:

Catstail, ну емае, там же тремя регулярками и одним действием можно решить...

0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38180 / 21115 / 4307
Регистрация: 12.02.2012
Сообщений: 34,722
Записей в блоге: 14
15.01.2021, 16:53
DmFat, не уверен, что это так уж элементарно. Но с интересом взгляну на такое решение!
0
15.01.2021, 17:33

Не по теме:

Цитата Сообщение от DmFat Посмотреть сообщение
ну емае, там же тремя регулярками и одним действием можно решить...
Поверю, что можно регулярки заюзать для получения коэффициентов и их привидения, но чтобы в одно действие решить... За гранью моего понимания!

0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,693
Записей в блоге: 29
15.01.2021, 17:40
Catstail, срезал! )))
DmFat, присоединяюсь к интересу, жду решения
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38180 / 21115 / 4307
Регистрация: 12.02.2012
Сообщений: 34,722
Записей в блоге: 14
15.01.2021, 17:53
Цитата Сообщение от Welemir1 Посмотреть сообщение
Catstail, срезал! )))
- вовсе нет! И в мыслях не было. Действительно интересно. Я, к сожалению, с регэкспами не очень дружу... Все не выберу время как следует потренироваться.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,693
Записей в блоге: 29
15.01.2021, 17:58
Catstail, я их в профессиональной карьере испоьзовал раза 3, в пет-проектах никогда =)
Держусь от этого сатанизма подальше, хотя да, порой решает кучу проблем. Ждем ДмФата с мастер-классом
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
15.01.2021, 18:01
Лучший ответ Сообщение было отмечено LInnnn как решение

Решение

LInnnn,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def fun(st) :
    # st = '16-4x+2x-12=-x+10'
    st = st.replace('-x', '-1x').replace('+x', '+1x')
    st = st.replace('+', ' +').replace('-', ' -')
    left_ , right_ = map(str, st.split('='))
    left_arr = left_.split()
    right_arr = right_.split()
    
    x_arr = ([int(ix[:-1]) for ix in left_arr if 'x' in ix]
     + [(-1)*int(ix[:-1]) for ix in right_arr if 'x' in ix])
     
    num_arr = ([(-1)*int(ix) for ix in left_arr if 'x' not in ix]
     + [int(ix) for ix in right_arr if 'x' not in ix])
     
    if sum(x_arr) :
        return round(sum(num_arr) / sum(x_arr) ,3)
    return 'NO'
 
n = int(input())
for _ in range(n) :
    print(fun(input()))
5
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
15.01.2021, 23:39

Не по теме:

Цитата Сообщение от Welemir1 Посмотреть сообщение
Ждем ДмФата с мастер-классом
Присоединяюсь


0
90 / 125 / 28
Регистрация: 17.10.2010
Сообщений: 1,329
16.01.2021, 22:51
Цитата Сообщение от Gdez Посмотреть сообщение
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def fun(st) :
    # st = '16-4x+2x-12=-x+10'
    st = st.replace('-x', '-1x').replace('+x', '+1x')
    st = st.replace('+', ' +').replace('-', ' -')
    left_ , right_ = map(str, st.split('='))
    left_arr = left_.split()
    right_arr = right_.split()
x_arr = ([int(ix[:-1]) for ix in left_arr if 'x' in ix]
     + [(-1)*int(ix[:-1]) for ix in right_arr if 'x' in ix])
num_arr = ([(-1)*int(ix) for ix in left_arr if 'x' not in ix]
     + [int(ix) for ix in right_arr if 'x' not in ix])
if sum(x_arr) :
        return round(sum(num_arr) / sum(x_arr) ,3)
    return 'NO'
n = int(input())
for _ in range(n) :
    print(fun(input()))
Как вводить значения? После ввода 2 и 1 уравнения выходит ошибка????
Миниатюры
Уравнение  
0
90 / 125 / 28
Регистрация: 17.10.2010
Сообщений: 1,329
16.01.2021, 22:54
Gdez, Все спасибо дошло!
0
90 / 125 / 28
Регистрация: 17.10.2010
Сообщений: 1,329
17.01.2021, 11:40
Gdez, как сделать чтобы можно было решать квадратные и кубические уравнения???? Что то я не догоняю.
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
17.01.2021, 12:26
isaak, таким алгоритмом никак. Основное в этой задаче - чтение формулы и "вычленение" коэффициентов. (с 3-й по 7-ю строчки). Само решение уравнения реализовано в 8-й и 10-й строчках как решение линейного уравнения.
Для решения полиномов задача разбивается на два этапа:
- "чтение-расшифровка" формулы
- решение согласно условиям (целочисленное; всех корней и тд)
1
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
18.01.2021, 08:59
iSmokeJC, Welemir1, Catstail, ладно, погорячился я, с регулярками и парой действий, получилось... Прошу простить мое высказывание за 2 минуты до конца рабочего дня!

Пару набросков, признаюсь, я не особо старался.
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
import re
 
 
def foo(equation: str) -> str:
    equation = re.sub(r"([+-])x", r"\g<1>1x", equation)
    left, right = re.split("=", equation)
    right = re.sub(r"([+-]?)(\d+)",
                   lambda match: "-+"[match.group(1) == "-"] + match.group(2),
                   right)
    variables = re.findall(r"[+-]?\d+x?", left + right)
    devisor = sum(int(var.replace("x", "")) for var in variables if "x" in var)
    if devisor == 0: return "NO"
    return str(sum(int(var) for var in variables if "x" not in var) * (-1) / devisor)
 
 
assert foo("24-x+3x-2x=16-x") == "-8.0"
assert foo("16-4x+2x-12=-2x+10") == "NO"
assert foo("16-4x+2x-12=-x+10") == "-6.0"
 
 
 
def bar(equation: str) -> str:
    num, denom = 0, 0
    equation = re.sub(r"([+-])x", r"\g<1>1x", equation)
    left, right = re.split("=", equation)
    right = re.sub(r"([+-]?)(\d+x?|x)",
                   lambda match: "-+"[match.group(1) == "-"] + match.group(2),
                   right)
    def subber(match: re.Match):
        nonlocal num, denom
        value, x = match.groups()
        if not x: num += int(value)
        else: denom += int(value)
    re.sub(r"([+-]?\d+)(x?)", subber, left + right)
    if denom == 0: return "NO"
    return str(num / denom)
 
bar("24-x+3x-2x=16-x") == "-8.0"
bar("16-4x+2x-12=-2x+10") == "NO"
bar("16-4x+2x-12=-x+10") == "-6.0"
3
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38180 / 21115 / 4307
Регистрация: 12.02.2012
Сообщений: 34,722
Записей в блоге: 14
18.01.2021, 09:05
DmFat, отлично!
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
18.01.2021, 09:05
DmFat,

Не по теме:

Ща придет краш-тестер Arsegg и все сломает!


0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,693
Записей в блоге: 29
18.01.2021, 09:05
Цитата Сообщение от DmFat Посмотреть сообщение
Прошу простить мое высказывание за 2 минуты до конца рабочего дня!
ладно уж, спишем на усталость, но в следующий раз чтобы точно!
0
18.01.2021, 09:14

Не по теме:

Цитата Сообщение от iSmokeJC Посмотреть сообщение
Ща придет краш-тестер Arsegg и все сломает!
За что так жестко? :'(

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.01.2021, 09:14
Помогаю со студенческими работами здесь

Уравнение на питон
Добрый день,кто может написать такое уравнение ,я новичок и уже 3 час сижу и никак ... Помогите пожалуйста, заранее спасибо

Кубическое уравнение
Напишите программу, которая будет искать все целые X, удовлетворяющие уравнению AX3 + BX2 + CX + D = 0, где A, B, C, D — данные...

Уравнение на Python
Уравнение \left|ax-b \right|=c-2a(x-2) Отсюда через программу выразить и найти x (несколько случаев из-за модуля) a,b,c - любые...

Квадратное уравнение
Программа, которая по заданным коэффициентам квадратного уравнения находит его вещественные корни и их количество

Вычислить уравнение
Не могу понять как его решить, препод не объяснил)


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
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
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru