Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program lab10;
- {$APPTYPE CONSOLE}
- uses
- Windows,
- SysUtils;
- const
- n_max=10;
- type
- mat=array[1..n_max] of integer;
- procedure rus; {русификация}
- begin
- setconsolecp(1251);
- setconsoleoutputcp(1251);
- end;
- procedure check_files(var dat,rez: textfile); {проверка файлов}
- begin
- if (paramcount = 0) then
- begin
- writeln('К ярлыку не привязаны файлы.');
- readln;
- halt
- end;
- assignfile(dat,paramstr(1));
- assignfile(rez,paramstr(2));
- try
- Reset(dat);
- except
- writeln('Ошибка при окрытии входного файла');
- readln;
- halt
- end;
- try
- Rewrite(rez);
- except
- writeln('Ошибка при создании или открытии выходного файла');
- close(dat);
- readln;
- halt
- end;
- end;
- procedure close_pr (var dat,rez:textfile); {выход из программы}
- begin
- close(dat);
- close(rez);
- writeln('...');
- readln;
- end;
- procedure check_n_u(var dat,rez:textfile; var n,u:shortint); {ввод и проверка n и u}
- begin
- try
- readln(dat,n);
- except
- writeln('Ошибка при считывании n.');
- close_pr(dat,rez);
- halt
- end;
- try
- readln(dat,u);
- except
- writeln('Ошибка при считывании U.');
- end;
- if (n<1) or (n>n_max) then
- begin
- writeln('Некорректное значение n.');
- close_pr(dat,rez);
- halt
- end;
- end;
- procedure input_a(var dat,rez:textfile; var a:mat; n:shortint); {ввод массива и проверка его элементов}
- var
- i:shortint;
- flag_a:boolean;
- begin
- i:=0;
- flag_a:=true;
- while (i<n) and (flag_a=true) do
- begin
- inc(i);
- try
- read(dat,a[i]);
- except
- writeln('Ошибка при чтении элемента A[',i,'].');
- flag_a:=false;
- end;
- if (abs(a[i])>10) and (flag_a=true) then
- begin
- writeln('Элемент a[',i,'] имеет недопустимое значение.');
- flag_a:=false;
- end;
- end;
- if (flag_a=false) then
- begin
- close_pr(dat,rez);
- halt
- end;
- end;
- procedure find_first_positive_element(const a:mat; const n:shortint; out k:shortint; out flag:boolean); {поиск первого положительного элемента}
- var
- i:shortint;
- begin
- i:=0;
- flag:=true;
- while (i<n) and (flag=true) do
- begin
- inc(i);
- if (a[i]>0) then
- begin
- k:=i;
- flag:=false;
- end;
- end;
- end;
- procedure quest(var dat,rez:textfile; var a:mat; var n,u,k,m,count:shortint); {поиск максимума}
- var
- i:integer;
- begin
- i:=k;
- m:=-11;
- count:=0;
- while (i<n) do
- begin
- inc(i);
- if (a[i]<u) then
- begin
- inc(count);
- if (a[i]>m) then
- begin
- m:=a[i];
- end;
- end;
- end;
- end;
- procedure output(const a:mat; var rez:textfile; var n,u,k,m:shortint); {вывод}
- var
- i:shortint;
- begin
- writeln(rez,'Лабораторная работа №10.');
- writeln(rez);
- writeln(rez,'Длинна массива: ',n);
- writeln(rez);
- writeln(rez,'Значение переменной U: ',u);
- writeln(rez);
- writeln(rez,'Массив A:');
- writeln(rez);
- for i:=1 to n do
- write(rez,a[i],' ');
- writeln(rez);
- writeln(rez);
- end;
- var
- dat,rez:textfile;
- n,u,k,m,count:shortint;
- a:mat;
- flag:boolean;
- begin
- rus;
- check_files(dat,rez);
- check_n_u(dat,rez,n,u);
- input_a(dat,rez,a,n);
- find_first_positive_element(a,n,k,flag);
- output(a,rez,n,u,k,m);
- if (flag=true) then
- writeln(rez,'Все элементы массива меньше нуля.')
- else
- begin
- quest(dat,rez,a,n,u,k,m,count);
- if count=0 then
- writeln(rez,'Не существует элементов таких, что они одновременно больше положительного элемента и меньше U.')
- else
- writeln(rez,'Максимальный элемент: ',m);
- end;
- close_pr(dat,rez);
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement