1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code]. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Программа расчета харак-тик выходного сигнала электроцепи
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.
Вылазят ошибки и не могу их исправить. Помогите пожалуйста! Её уже сдавать надо, а я никак её сделать не могу. Если не использовать процедуру MAXI в процедуре вывода результатов на экран, то вылазит 26 ошибка на 153:32. А если использовать то 143 ошибка на 133:54.
Turbo Pascal 7.1, брал отсюда tp7.info Ой, простите я просто не заменил procedure на function. Ну теперь хоть компилируется, вот исходные данные Тнач=0,5 с, Тм=2,5 с, Ткон=6 с, Uм=20,5 В, Uвх1=10 В, Uвх2=30 В, а=2,5 1/В, b=10 В. После не долгих махинаций выяснил что в:
a:=Um/(tm-tn); b:=Um/(tk-tm);
ошибка. Только не пойму откуда здесь берется ноль, что вылазит 200 ошибка. По химичав снова: