Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Задан целочисленный одномерный массив A из N элементов.
- //Найти значение максимального элемента среди элементов, кратных k и расположенных до последнего отрицательного элемента.
- //(Подсказка: «Сначала найти первый со значением, кратным k, и последний отрицательный, а затем уже искать максимум
- //либо вывести сообщение о причинах невозможности поиска.»)
- program lab10;
- {R+}
- type matrix=array[1..10] of integer;
- Procedure IO(var fin,fout:textfile; out n:integer; out k:integer; out A:matrix);
- var i:byte;
- Begin
- readln(fin,n);
- readln(fin,k);
- for i:=1 to n do
- read(fin,A[i]);
- writeln(fout,'Исходный массив A: ');
- for i:=1 to n do
- write(fout,A[i],' ');
- writeln(fout,' ');
- writeln(fout,'Число k равно: ',k);
- End;
- Procedure findfirst(const n:integer; const k:integer; const A:matrix; out flag_k:boolean; out j:integer);
- var i:byte;
- Begin
- i:=1;
- flag_k:=false;
- while (i<=n) and not flag_k do Begin
- if (A[i] mod k = 0) then Begin
- flag_k:=true;
- j:=i;
- end
- else inc(i);
- end;
- End;
- Procedure findfinal(const n:integer; const A:matrix; out flag:boolean; out g:integer);
- var i:byte;
- Begin
- i:=n;
- flag:=false;
- while (i>1) and not flag do Begin
- if (A[i])<0 then Begin
- flag:=true;
- g:=i;
- end
- else dec(i);
- end;
- if (flag=false) then g:=n;
- end;
- Procedure findmax(const A:matrix; const j:integer; const g:integer; const k:integer; out max:integer);
- var i:byte;
- Begin
- max:=A[j];
- for i:=j to g do Begin
- if (A[i] mod k = 0) and (A[i]>max) then max:=A[i];
- end;
- end;
- Procedure printresult(var fout:textfile; const max:integer; const g,j:integer; const flag_k:boolean);
- Begin;
- if (flag_k=false) then writeln(fout,'Нет элементов, кратных k')
- else if (j>g) then writeln(fout,'Первый элемент, кратный k, стоит после последнего отрицательного')
- else writeln(fout,'Максимум равен: ', max);
- end;
- var A:matrix;
- fin,fout:textfile;
- n,k:integer;
- j,g:integer;
- max:integer;
- flag,flag_k:boolean;
- begin
- Assignfile(fin,Paramstr(1));Assignfile(fout,Paramstr(2));
- Reset(fin);Rewrite(fout);
- IO(fin,fout,n,k,A);
- findfirst(n,k,A,flag_k,j);
- findfinal(n,A,flag,g);
- findmax(A,j,g,k,max);
- printresult(fout,max,g,j,flag_k);
- closefile(fin);
- closefile(fout);
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement