Дан вектор А[1:30] и вектор В[1:15]. Если разность между максимальными элементами векторов больше 10, то из положительных элементов обеих векторов сформировать матрицу С[1:5,1:4]. Иначе в векторе А за максимальным элементом вставить все элементы вектора В.- Pascal(Паскаль)

Program Lab10;
uses crt;
const na=30;
      nb=15;
      m=5;
      n=4;
type
     Tvec=array[1..na+nb] of integer;
     Tmtr=array[1..m,1..n] of integer;
Procedure VvodVector(Var Aa:Tvec;n:byte;Pa,Qa:integer;c:char);
var i:byte;
begin
repeat
writeln('Введите диапазон для вектора ',c);
readln(Pa,Qa);
until Qa>Pa;
for i:=1 to n do
Aa[i]:=random(Qa-Pa+1)+Pa;
end;
Procedure VyvodVector(Aa:Tvec;n:Byte;c:char);
var i:byte;
begin
writeln('Вектор ',c);
for i:=1 to n do
Write (Aa[i]:4);
writeln
end;
Procedure VyvodMatr(Mm:Tmtr);
var i,j:byte;
begin
for i:=1 to m do
 Begin
  for j:=1 to n do
  Write (Mm[i,j]:4);
  WriteLn;
 End;
end;
Function MaxVec(Aa:Tvec;n:Byte;var ind:Byte):Integer;//нужен не сам макс., а его индекс в массиве
var i,max:byte;
begin
max:=Aa[1];
ind:=1;
for i:=1 to n do
if Aa[i]>max then
 begin
  max:=Aa[i];
  ind:=i
 end;
MaxVec:=max;
end;
procedure CreateMatr(Aa,Bb:Tvec;var Mm:Tmtr);
var i,p,q,k:Byte;
begin
for p:=1 to m do
for q:=1 to n do
Mm[p,q]:=0;//обнулим матрицу
k:=0;
p:=1;
q:=0;
for i:=1 to na do//выберем положительный из массива А
if Aa[i]>0 then
 begin
  k:=k+1;
  if k>m*n then exit;
  q:=q+1;
  if q>n then
   begin
    p:=p+1;
    q:=1;
   end;
  Mm[p,q]:=Aa[i];
 end;
if k<m*n then //если не хватило, выберем из массива В
for i:=1 to na do
if Bb[i]>0 then
 begin
  k:=k+1;
  if k>m*n then exit;
  q:=q+1;
  if q>n then
   begin
    p:=p+1;
    q:=1;
   end;
  Mm[p,q]:=Bb[i];
 end;
end;
procedure NewVec(var Aa:Tvec;Bb:Tvec;ind:Byte);
var i,j,n:Byte;
begin
n:=na;
for i:=1 to nb do
 begin
  n:=n+1;
  for j:=n downto ind+1+i do
  Aa[j]:=Aa[j-1];
  Aa[ind+i]:=Bb[i];
 end;
end;
var A,B:Tvec;
    C:Tmtr;
    Pa,Qa,Pb,Qb,ma,mb:integer;
    ia,ib:Byte;
begin
clrscr;
VvodVector(A,30,Pa,Qa,'A');
VvodVector(B,15,Pb,Qb,'B');
 
VyvodVector(A,30,'A');
ma:=MaxVec(A,30,ia);
writeln('Максимальный элемент=',ma,' его индекс=',ia);
VyvodVector(B,15,'B');
mb:=MaxVec(B,15,ib);
writeln('Максимальный элемент=',mb);
if abs(ma-mb)>10 then
 begin
  writeln('Разность максимальных больше 10');
  CreateMatr(A,B,C);
  VyvodMatr(C);
 end
else
 begin
  writeln('Разность максимальных не больше 10');
  NewVec(A,B,ia);
  VyvodVector(A,na+nb,'A');
 end;
readln
end.

Leave a Comment

4 + 2 =