Задача 261 сложное уравнение python

Задача 261 сложное уравнение питон

Решить в целых числах уравнение ( ax + b ) : ( cx + d ) = 0. Вводятся 4 числа: a, b, c и d; c и d не равны нулю одновременно. Необходимо вывести все решения, если их число конечно, «NO» (без кавычек) , если решений нет, и «INF» (без кавычек) , если решений бесконечно много.

Пояснения:
Если a=c и b=d или a=0 и b<>0, то уравнение не имеет решений. Если a=0 и b=0, то уравнение имеет бесконечно много решений. И последний случай: если a<>0, то находим корень, проверяем, является ли он целым числом, и проверяем, не получится ли 0 в знаменателе. Если все условия выполняются — выводим корень, если нет — уравнение не имеет решений.

Сделал 2 варианта. . оба работают но не во всех случаях.

1. program zadanieO;
var a,b,c,d:integer;
begin
readln(a);
readln(b);
readln©;
readln(d);
if (c<>0) and (d<>0) then
if ((a=c) and (b=d)) or ((a=0) and (b<>0)) then writeln(‘NO’)
else if ((a=0) and (b=0)) and (((-d)/c)<>0) then writeln(‘INF’)
else if (a<>0) then
if (-b mod a = 0) and (((-d)/c)<>0) then writeln(-b div a)
else writeln(‘NO’);
end.

2. program zadanieO;
var a,b,c,d:integer;
begin
readln(a);
readln(b);
readln©;
readln(d);
if (c<>0) and (d<>0) then
begin
if (a=0) and (b=0) and ((c*((-d)/c) -d)<>0) then writeln(‘INF’)
else if ((a=0) or (a*d = b*c)) and ((c*((-d)/c) -d)<>0) then writeln(‘NO’)
else if (b div a * a = b) and ((c*((-d)/c) -d)<>0) then writeln(-b div a)
else writeln(‘NO’);
end;
end.

Может быть, поступить так? Ввести дополнительную переменную, result, и при помощи нее избавиться от вложенных проверок? Например:

VAR result :String;
.
result := »;

IF (c = 0) and (d = 0) THEN result := ‘NO’;

IF (result = ») THEN
IF (a = c) and (b = d) THEN result := ‘NO’;

IF (result = ») THEN
IF (a = 0) and (b <> 0) THEN result := ‘NO’;

IF (result = ») THEN
IF (a = 0) and (b = 0) THEN result := ‘INF’;

IF (result = ») THEN
IF (d-c*(b div a) = 0) THEN result := ‘NO’;

IF (result = ») THEN
IF (b mod a = 0) THEN Str(result, — b div a);

IF (result = ») THEN result := ‘Ваще в непонятках’;

Решить в целых числах уравнение: (ax+b) / (cx+d) =0

Вводятся 4 числа: a,b,c,d; c и d не равны нулю одновременно.

Необходимо вывести все решения, если их число конечно, «NO» (без кавычек), если решений нет, и «INF» (без кавычек), если решений бесконечно много.

Решение линейного уравнения в Python

В данной статье мы разберем программу на python для решения линейного уравнения Программа решает уравнение вида ax = b. Коэффициенты a и b задаются пользователем с клавиатуры. Программа находит решение и выводит его на экран. Если решений бесконечное количество или их нет, то программа оповещает об этом.
Все возможные решения линейного уравнения можно описать так
Если a = 0 и b = 0, то решений бесконечное количество.
Если a = 0 и b ≠ 0, то решений нет.
Если a ≠ 0, то единственное решение будет равно b / a.
Для задания коэффициентов с клавиатуры в Python используется функция ввода вещественного числа float(input()). Подробно о вводе информации с клавиатуры в python
a = float(input(«Введите коэффициент a «))
b = float(input(«Введите коэффициент b «))
В Python, чтобы проверить равенство двух объектов, используется ==, для проверки неравенства объектов используется !=. Для проверки двух условий одновременно используется оператор and. Подробно об условиях в python

Программа на Python для решения линейного уравнения
a = float(input(«Введите коэффициент a «))
b = float(input(«Введите коэффициент b «))
if (a == 0 and b == 0):
print(«Бесконечное количество решений.»)
if (a == 0 and b != 0):
print(«Решений нет.»)
if (a != 0):
print(b/a))

Полезно почитать по теме условия в Python примеры
Пример анкеты, опроса на Python

Задачи по Python для начинающих от Tproger и GeekBrains

Вместе с факультетом Python-разработки GeekUniversity собрали для вас несколько простых задач по Python для обучения и тренировки. Их можно решать в любом порядке.

Обратите внимание, что у любой задачи по программированию может быть несколько способов решения. Чтобы посмотреть добавленный нами вариант решения, кликните по соответствующей кнопке. Все приведённые варианты написаны на Python 3.

Задача 1

Есть список a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] .

Выведите все элементы, которые меньше 5 .

Самый простой вариант, который первым приходит на ум — использовать цикл for :

Также можно воспользоваться функцией filter , которая фильтрует элементы согласно заданному условию:

И, вероятно, наиболее предпочтительный вариант решения этой задачи — списковое включение:

print([elem for elem in a if elem

Задача 2

a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] ;

b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] .

Нужно вернуть список, который состоит из элементов, общих для этих двух списков.

Можем воспользоваться функцией filter :

Или списковым включением:

result = [elem for elem in a if elem in b]

А можно привести оба списка к множествам и найти их пересечение:

result = list(set(a) & set(b))

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

Квадратное уравнение

Программа, позволяющая находить корни квадратного уравнения, – это один из примеров простых программ, которые можно написать на Python 3. Она хорошо подойдет для начинающих изучать этот язык программирования.

Постановка задачи

Уравнение, которое будем решать, выглядит следующим образом: a·x²+b·x+c=0. Пользователю предлагается ввести значения a, b и с в терминале. После этого программа посчитает дискриминант. На его основе найдем решения уравнения – значения x, для которых будет выполняться равенство.

Вот пример работы программы, которая будет написана.

Программа

Для решения квадратных уравнений на Python 3 напишем код, приведенный ниже. Разберем некоторые моменты, которые мы использовали в этой простой программе:

  • print — эта функция выводит на экран информацию.
  • input — выводит информацию и предлагает пользователю ввести данные.
  • b**2 — это возведение в степень, в данном случае переменная b возводится в квадрат.
  • str — эта функция приводит данные к строковому виду.
  • if-elif-else — это условные операторы в языке Python. Исходя из значения discriminant мы определяем количество корней квадратного уравнения.
  • discriminant ** 0.5 — с помощью такого способа извлекаем квадратный корень. В Python есть несколько способов извлечения корней, например, с помощью функции sqrt из библиотеки math. Про способы извлечения корней в Python описано в отдельной статье.

Запустим программу и введём нужные коэффициенты.

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

Дополнительно

Хотелось бы уделить внимание ещё одному моменту. Если дискриминант отрицательный, то действительных корней нет. Но будут комплексные корни. Если мы хотим их обрабатывать, то следует изменить конструкцию условных операторов следующим образом:

Тогда пример решения уравнения будет выглядеть следующим образом:

Как видим, получили два комплексных корня.

Этот простой код написанный на Python 3 можно для обучения программированию немного усложнить:

  • Предлагать запрос в конце программы «Решить ещё одно уравнение (y/n): ». И если пользователь введет «y», то заново запросить коэффициенты. Это нужно делать в цикле. Подробнее о циклах в Python можно прочитать здесь.
  • Сделать проверку корректности ввода. Ведь пользователь вместо числа может ввести какую-нибудь строку, которая не будет корректно обработана. Про проверку на число описано в отдельной статье.


источники:

http://tproger.ru/problems/python-3-exercises-for-beginners-geekbrains/

http://all-python.ru/primery/kvadratnoe-uravnenie.html