Вставить после всех строк (двумерного массива), в которых есть заданное число А, последнюю строку - Pascal ABC

Формулировка задачи:

Вставить после всех строк (двумерного массива), в которых есть заданное число А, последнюю строку. Желательно с процедурами init, print, insert


textual

Код к задаче: «Вставить после всех строк (двумерного массива), в которых есть заданное число А, последнюю строку - Pascal ABC»

const nmax=20;
type mtr=array[1..nmax,1..nmax] of integer;
procedure init(var a:mtr; var m,n:byte);
var i,j:byte;
begin
repeat
write('Количество строк до ',nmax div 2,' m=');
readln(m);
until m in [1..nmax];
repeat
write('Количество столбцов до ',nmax,' n=');
readln(n);
until n in [1..nmax];
for i:=1 to m do
for j:=1 to n do
a[i,j]:=random(20);
end;
procedure print(a:mtr;m,n:byte;s:string);
var i,j:byte;
begin
writeln(s);
for i:=1 to m do
 begin
  for j:=1 to n do
  write(a[i,j]:4);
  writeln;
 end;
end;
procedure insert(var a:mtr;x:integer;var m:byte;n:byte);
var b:array[1..nmax] of integer;
    i,j,k,f:byte;
begin
for i:=1 to n do
b[i]:=a[m,i];
i:=1;
while i<=m do
 begin
  f:=0;
  j:=1;
  while(j<=n)and(f=0)do
  if a[i,j]=x then f:=1
  else inc(j);
  if f=1 then
   begin
    inc(m);
    if i<m-1 then
    for k:=m downto i+2 do
    for j:=1 to n do
    a[k,j]:=a[k-1,j];
    for j:=1 to n do
    a[i+1,j]:=b[j];
    inc(i,2);
   end
  else inc(i);
 end;
end;
var c:mtr;
    m,n:byte;
    A:integer;
begin
randomize;
init(c,m,n);
print(c,m,n,'Исходный массив');
write('A=');
readln(A);
insert(c,A,m,n);
print(c,m,n,'Вставка строк');
end.
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.


СДЕЛАЙТЕ РЕПОСТ

6   голосов, оценка 4.000 из 5

Источник
Похожие ответы