(ax−1)(bx−1) < 0 на паскаль - Вопросы по Pascal

Вопрос (ax−1)(bx−1) < 0 на паскаль

Регистрация
29 Мар 2013
Сообщения
100
Репутация
0
Спасибо
0
Монет
0
Напишите программу решения неравества, зависящего от параметров

a и b – заданных вещественных чисел; x – неизвестное: (ax−1)(bx−1) < 0
 
Регистрация
2 Фев 2013
Сообщения
98
Репутация
0
Спасибо
0
Монет
0
program Equation;
var
a,b,x:real;
begin
writeln('Введите параметры a и b:');
readln(a,b);
x:=1/((a/b) + 1);
writeln ('Значение переменной х:', x:2:2);
end.
 
Регистрация
1 Июл 2013
Сообщения
85
Репутация
0
Спасибо
0
Монет
0
program inequality;
var
a, b, x: real;
begin
writeln('Введите параметры a и b');
readln(a, b);
if (a*b > 0) then begin
x := 1 / a;
writeln('x < ', x);
end else begin
x := 1 / b;
writeln('x > ', x);
end;
end.
 
Регистрация
15 Дек 2013
Сообщения
93
Репутация
0
Спасибо
0
Монет
0
read(a, b);
if a > b then begin {сортировка a и b по возрастанию}
t := a; a := b; b := a
end;
if a = b then {парабола касается оси X сверху, либо оба коэф-та = 0}
writeln('not found')
else if a * b = 0 then {наклонная прямая, один из коэф-тов = 0}
if a + b < 0.0 then {прямая слева вниз направо}
writeln('x > ', 1.0 / (a + b))
else {прямая слева вверх направо}
writeln('x < ', 1.0 / (a + b))
else if a * b < 0.0 then {парабола пересекает ось X, рога вниз}
writeln(' x < ', 1.0 / a, ' or x > ', 1.0 / b)
else {парабола пересекает ось X, рога вверх}
writeln(1.0 / b, ' < x < ', 1.0 / a)
 
Регистрация
29 Июл 2013
Сообщения
90
Репутация
0
Спасибо
0
Монет
0
Вот код, выдающий решение во всех случаях (нули, не нули, a &lt; b, b &lt; a, b = a, выход за границу точности типа real и т.п.): program InequalitySolver;
var
a, b, t, ia, ib: real;
begin
write('Введите параметры a и b: ');
readln(a, b);
if a = b then
writeln('Нет решений')
else if (a = 0) or (b = 0) then begin
if (a = 0) then t := b
else t := a;
ia := 1 / t;
if ia < 0 then
writeln('x ∈ (-∞, ', ia : 5 : 16, ')')
else
writeln('x ∈ (', ia : 5 : 16, ', +∞)')
end else begin
ia := 1 / a;
ib := 1 / b;
if ia < ib then begin
t := ia;
ia := ib;
ib := t
end;
if (ia > 0) xor (ib > 0) then
writeln('x ∈ (-∞, ', ib : 5 : 16, ') ∪ (', ia : 5 : 16, ', +∞)')
else
writeln('x ∈ (', ib : 5 : 16, ', ', ia : 5 : 16, ')')
end
end.
Рассматриваемые варианты: a = b - нет решений (левая часть становится квадратом вещественного числа)одно из a и b равно нулю (а второе - нет) - линейное неравенствов остальных случаях - парабола, при этом если знаки a и b одинаковые (ветви вверх), то решение - между корнями, а иначе (ветви вниз) решение - вне интервала между корнями
P.S. Чуть не забыл: говнокод двух предыдущих отвечающих не работает. Первый просто спёр откуда-то кусок кода для решение совершенно другой задачи, и его вряд ли вообще интересует, работает его программа или нет, т.к. он - тролль с КПД 7%, написавший 2 тыс примитивных ответов ради баллов. Второй - аналогичный персонаж, но пока успевший написать только 22 сообщения за 2 часа с момента регистрации. Люди, которые привыкли отвечать обдуманно (а тем более когда надо написать хоть и небольшую, но программу), 20 ответов напишут за день, а не за пару часов.
 
Сверху Снизу