Предмет: Информатика,
автор: saharnypersik
Гуру паскаля и математики, вопрос к вам: в чем трабл программы? При любом значении выдает минус бесконечность.
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.
Приложения:
Ответы
Автор ответа:
0
Математика:
Подкоренное выражение всегда больше либо равно нулю.
Так как у нас модуль, то в этой части примера решение есть при всех x (модуль убирает минус).
Далее, дробь.
Знаменатель должен быть не равен нулю.
a)
b)
Получается, математические ограничение для х:
Так, с математикой разобрались.
Информатика:
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.
Натуральный логарифм от нуля равен минус бесконечности.
Готово!
Похожие вопросы
Предмет: Английский язык,
автор: yanamatveeva
Предмет: Другие предметы,
автор: Аноним
Предмет: Українська мова,
автор: rachenko84
Предмет: Физика,
автор: ShureevSerik