Какие ошибки в проге? (Задание во вложении) Паскаль выдает "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);
Answers & Comments
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.
Verified answer
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;
f = 27.5382718260836