Предмет: Информатика, автор: Wilfreeed

Какие ошибки в проге? (Задание во вложении) Паскаль выдает "a = NaN, f = NaN"
var x,y,z,k,l,m,n,o,a,f,k1,l1,o1:real;
begin
write('Введите значение х = '); read(x);
write('Введите значение y = '); read(y);
write('Введите значение z = '); read(z);
k:=x/y; k1:=exp(ln(x)*k);
l:=y/(x*z); l1:=exp(ln(l)*(1/3));
a:=abs(k1-l1);
writeln('a = ', a);
m:=a-x;
n:=y-(z/(y-x));
o:=sqr(y-x); o1:=1+o;
f:=m*n/o1;
writeln('f = ', f);

Приложения:

Ответы

Автор ответа: Segrif
0
1.
k := y/x; (а не x/y)

2.
В l1 := exp(ln(l) * (1/3)) берется логарифм от отрицательного числа (т.к. z < 0).
Предлагаю написать так:
l1:=exp(ln(abs(l))*(1/3));
if l < 0 then l1 := -l1;

Автор ответа: cvvkl
0
то, что логарифм из отрицательного числа не берется, это ДА. но КОРЕНЬ третьей степени-то извлекается!!!
Автор ответа: Segrif
0
Извлекается. Но в программе автора сначала берется логарифм, и это приводит к неправильному результату.
Автор ответа: cvvkl
0
function sign(x:real):integer;
begin
     if x>0 then sign:=1 else if x<0 then sign:=-1 else sign:=0;
end;
var x,y,z,k,l,m,n,o,a,f,k1,l1,o1:real;
begin
write('Введите значение х = ');read(x);
write('Введите значение y = '); read(y);
write('Введите значение z = '); read(z);
k1:=exp(ln(x)*k);
l:=y/(x*z);
l1:=sign(l)*power(abs(l),1/3);
a:=abs(k1-l1);
writeln('a = ', a);
m:=a-x;
n:=y-(z/(y-x));
o:=sqr(y-x);
o1:=1+o;
f:=m*n/o1;
writeln('f = ', f);
end.
Автор ответа: cvvkl
0
получились ответыa = 404.599606936305
f = 27.5382718260836
Похожие вопросы
Предмет: Другие предметы, автор: Аноним
Предмет: Математика, автор: Malina9327
Предмет: Математика, автор: oksak