OT7
05.08.2020 03:50
Информатика
Есть ответ 👍

Гуру паскаля и математики, вопрос к вам: в чем трабл программы? При любом значении выдает минус бесконечность. program one;
var
x, y, a, b, c: real;
begin
write('Введите x: ');
readln(x);
write('Введите y: ');
readln(y);
if (x>0) and (x<>-4) then
begin
a:= y-sqr(abs(x));
b:= x-y/(x+sqr(x)/4);
c:= ln(abs(a*c));
write('ответ: ');
writeln(c);
end
else // если данное, введенное пользователем, не удовлетворяет ограничению
writeln('Нет решений');
end.

126
461
Посмотреть ответы 2

Ответы на вопрос:


Математика:

Подкоренное выражение всегда больше либо равно нулю.

Так как у нас модуль, то в этой части примера решение есть при всех x (модуль убирает минус).

Далее, дробь.

Знаменатель должен быть не равен нулю.

x+\frac{x^2}{4} \neq 0 \\ 4x+x^2 \neq 0\\x(4+x) \neq 0

a)

x\neq 0

b)

x\neq - 4

Получается, математические ограничение для х:

x\neq 0

x\neq - 4

Так, с математикой разобрались.

Информатика:

if (x<>0) and (x<>-4) then в 9 строчке

sqr - это возведение в квадрат

sqrt - квадратный корень

(от англ. слов square и square root)

То есть:

a:=y-sqrt(abs(x)); в 11 строчке

И ошибка в 13 строчке:

c:=ln(abs(a*b));

(было c:=ln(abs(a*c);)

Собственно, минус бесконечность выдавало именно из-за ошибки в 13 строчке.

Умножали a на c.

Так как с не было определенно, то c=0.

А значит a*c=0.

Натуральный логарифм от нуля равен минус бесконечности.

Готово!

интерпретатор

Объяснение:

Популярно: Информатика