Задача 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

Оцените статью
Adblock detector