Йа НяшкО XD
Гуру
(4938)
13 лет назад
1. lgw, Sw, Phi - массивы. При обращении к ним указывайте индексы.
lgw[ i ]:=lw;
Sw[ i ]:=20*lg10(Wm);
Phi[ i ]:=Arctan(b/a)*d;
writeln(w:12:5, lgw[ i ]:6:3, Wm:12:5, Sw[ i ]:12:5, Phi[ i ]:12:5);
2. Инициализируйте переменные перед использованием.
w,h,u - вы из них что-то хотите вычислить, а они равны 0.
Откуда и получается, a = 0, b = 0 и ваш логарифм тоже вычисляется от 0. А его не существует и вываливается ошибка Invalid floating point operation.
Исправляйте.
Единственный
Мастер
(2154)
13 лет назад
Мой компиль не ругается на 36 строку.
Зато нашёл несколько ошибок. Должно быть так:
(61) lgw:=lw;
(66) Sw:=20*lg10(Wm);
(67) Phi:=Arctan(b/a)*d;
(70) writeln(w:12:5, lgw:6:3, Wm:12:5, Sw:12:5, Phi:12:5);
Возникнут вопросы или понадобится компиль - пиши на мыло или вконтакт id12702046, с пометкой "question/43296297"
Успехов!
Jurijus Zaksas
Искусственный Интеллект
(426192)
13 лет назад
Первое, что бросается в глаза - объявление переменных перед подпрограммами и их совпадение с формальными параметрами.
Ну и вот:
lg10:=ln(a)/ln(10.0); - учитывай, что тут а должно быть обязательно больше нуля, поставь проверку, кидай ошибку.
язык турбо паскаль
program z;
uses crt;
const
R1=330;
Roc=18000;
c=0.00000033;
Pts=10;
Decad=5;
d=180/Pi;
wi=0.1;
var
lgw, Sw, Phi: array [1..(Pts*Decad+1)] of real;
Delta, w, lw, Wm, b,a,y,u,h: real;
i: integer;
function ros(y: real): real;
begin
y:=Roc/R1;
ros:= y;
end;
function T1(u: real): real;
begin
u:=c*Roc;
T1:=u;
end;
function T2(h: real): real;
begin
h:=u/(1+y);
T2:=h;
end;
function lg10(a: real): real;
begin
lg10:=ln(a)/ln(10); <<<<<<<<<<<<<<(тут вылезает ошибка)
end;
function Pow10(a: real): real;
begin
Pow10:=exp(a*ln(10));
end;
function Re(w,h,u,y: real): real;
begin
Re:=(h*u*w*w+h*u*w*w*y+y)/(1+w*w*u*u);
end;
function Im(w,h,u,y: real): real;
begin
Im:=(h-u+h*y-u*y)/(1+w*w*u*u);
end;
begin
writeln(' w lg(w) W(w) 20lg(k) Phase');
writeln;
Delta:=1/Pts;
lw:=lg10(wi);
for i:=1 to (Pts*Decad+1) do
begin
lgw:=lw;
w:=Pow10(lw);
a:=Re(w,h,u,y);
b:=Im(w,h,u,y);
Wm:=Sqrt(a*a+b*b);
Sw:=20*lg10(Wm);
Phi:=Arctan(b/a)*d;
lw:=lw+Delta;
readln;
writeln(w:12:5, lgw:6:3, Wm:12:5, Sw:12:5, Phi:12:5);
end;
readln;
end.
подскажите кто знает как исправить