Program Kursovic;
uses crt;
const
maxind=160;
type
ArrayType=array [1..maxind] of real;
{---------------------------------------------------------}
{Процедура ввода исходной информации}
Procedure DATA(var n:integer;
kl:byte;
tn, tm, tk, Um, Uin2, Uin3, at, bt:real);
begin
Writeln('Введите нужное количество отсчетов сигнала');
Write('n=');
Readln(n);
Writeln('Введите признак kl=1, если хотите вывести результат на монитор');
Writeln('или признак kl=0, если хотите записать результаты в файлы f1 и f2');
Write('kl=');
Readln(kl);
Writeln('Введите ваши исходные данные');
Writeln('Начальный момент наблюдения входного сигнала');
Write('tn=');
Readln(tn);
Writeln('Момент времени, разделяющий две ветви алгоритма');
Writeln('расчета входного сигнала');
Write('tm=');
Readln™;
Writeln('Конечный момент времени наблюдения входного сигнала');
Write('tk=');
Readln(tk);
Writeln('Значение входного напряжения соответствующему моменту времени tm');
Write('Um=');
Readln(Um);
Writeln('Заданный параметр передаточной характеристики');
Write('Uin2=');
Readln(Uin2);
Write('Uin3=');
Readln(Uin3);
Write('a=');
Readln(at);
Write('b=');
Readln(bt);
End;
{---------------------------------------------------------}
{Описание процедуры формирования массива входных отсчетов}
procedure UIN1(var n:integer;
kl:byte;
tn, tm, tk, Um:real;
Uin:ArrayType);
var t, a, b, del:real;
i:integer;
begin
t:=tn;
del:=(tk-tn)/(n-1);
a:=Um/(tm-tn);
b:=Um/(tk-tm);
for i:=1 to n do
begin
if t>tm then Uin[i]:=b*(tk-t)
else Uin[i]:=a*(t-tn);
t:=t+del;
end;
end;
{---------------------------------------------------------}
{Описание процедуры формирования массива выходных отсчетов}
procedure Uout1(var n:integer;
kl:byte;
Uin2, Uin3, at, bt:real;
Uin, Uout:ArrayType);
var i:integer;
begin
for i:=1 to n do
if Uin[i]<=Uin2 then Uout[i]:=(at*Uin2)+bt
else if (Uin2<Uin[i]) and (Uin[i]<=Uin3) then Uout[i]:=(at*Uin[i])+bt
else if Uin[i]>Uin3 then Uout[i]:=(at*Uin3)+bt;
end;
{---------------------------------------------------------}
{Описание функции нахождения макс. значения выходного сигнала}
procedure MAXI(var n:integer;
Uout:Arraytype);
var
max:real;
i:integer;
begin
max:=Uout[i];
for i:=2 to n do
if Uout[i]>max then max:=Uout[i];
max:=MaxInt;
end;
{---------------------------------------------------------}
{Описание процедуры записи массивов входного и выходного сигнала}
{на диск в файлы с именами f1.prn и f2.prn}
procedure WRITEINFO(var n:integer;
uin,uout:ArrayType);
var
f1, f2:text;
i:integer;
begin
assign(f1,'f1.prn');
assign(f2,'f2.prn');
rewrite(f1);
rewrite(f2);
for i:=1 to n do
begin
WriteLn(f1,uin[i]:7:3);
WriteLn(f2,uout[i]:7:3);
end;
close(f1);
close(f2);
end;
{---------------------------------------------------------}
{Процедура вывода на экран результатов работы программы}
procedure REZULT(var n:integer;
kl:byte;
uin, uout:ArrayType);
var
i:integer;
begin
if kl=1 then
begin
WriteLn('Отсчеты входного сигнала');
for i:=1 to n do
WriteLn('uin[',i,']=',uin[i]:7:3);
WriteLn('Отсчеты выходного сигнала');
for i:=1 to n do
WriteLn('uout[',i,']=',uout[i]:7:3);
WriteLn('Макс. значение вых. сигнала=',MAXI(n,uout):7:3);
end
else
begin
WriteLn;
WriteLn;
WriteLn('Программа закончила свою работу. Массивы');
WriteLn('входных и выходных отсчетов сформированы');
WriteLn('и записаны в файлы f1.prn и f2.prn соответственно');
end;
end;
{---------------------------------------------------------}
var
n:integer;
kl:byte;
tn, tm, tk, Um, Uin2, Uin3, at, bt:real;
Uin, Uout:ArrayType;
begin {Main}
Clrscr;
Data(n, kl, tn, tm, tk, Um, Uin2, Uin3, at, bt);
Uin1(n, kl, tn, tm, tk, Um, Uin);
Uout1(n, kl, Uin2, Uin3, Uin, Uout);
Writeinfo(n, uin, uout);
Rezult(n, kl, uin, uout);
Readln;
end.
Вылазят ошибки и не могу их исправить. Помогите пожалуйста!
