• Предмет: Информатика
  • Автор: saharnypersik
  • Вопрос задан 1 год назад

Гуру паскаля и математики, вопрос к вам: в чем трабл программы? При любом значении выдает минус бесконечность.

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.

Приложения:

Ответы

Ответ дал: kombat1488
0

Математика:

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

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

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

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

x+\frac{x^2}{4} \neq 0 \\ </p><p>4x+x^2 \neq 0\\</p><p>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.

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

Готово!


ClarisVerbis: Добрый вечер. Оставлю задание. Пожалуйста. https://znanija.com/task/38515945
Вас заинтересует