Какие ошибки в проге? (Задание во вложении) Паскаль выдает "a = NaN, f = NaN" var...

0 голосов
32 просмотров

Какие ошибки в проге? (Задание во вложении) Паскаль выдает "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);


image

Информатика (43 баллов) | 32 просмотров
Дано ответов: 2
0 голосов
Правильный ответ

Function sign(x:real):integer;
begin
     if x>0 then sign:=1 else if x<0 then sign:=-1 else sign:=0;<br>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.

(83.5k баллов)
0

получились ответыa = 404.599606936305
f = 27.5382718260836

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;

(8.5k баллов)
0

то, что логарифм из отрицательного числа не берется, это ДА. но КОРЕНЬ третьей степени-то извлекается!!!

0

Извлекается. Но в программе автора сначала берется логарифм, и это приводит к неправильному результату.