Дана матрица размером 5*10. Удалить первый столбец,содержащий только положительные элементы — Pascal(Паскаль)

program mas;
uses crt;
const n=5; m=10;
var a: array[1..n,1..m] of integer;
    i,j,k,p,q: integer;
begin
clrscr;
randomize;
writeln('Исходная матрица:');
for i:=1 to n do
 begin
  for j:=1 to m do
   begin
    a[i,j]:=random(100)-50;
    write(a[i,j]:5);
   end;
  writeln;
 end;
q:=m;{запомним количество столбцов, m-константа, ее уменьшать нельзя}
p:=0;{номер первого столбца из положительных}
for j:=m downto 1 do{идем от последнего столбца, чтобы найти первый}
 begin
  k:=0;
  for i:=1 to n do
  if a[i,j]>0 then k:=k+1;{считаем в столбце положительные}
  if k=n then p:=j;{если все, то запоминаем}
 end;
if p=0 then write('В матрице нет столбцов, содержащих только положительные элементы')
else
 begin
  writeln('Номер первого столбца, содержащего только положительные элементы=',p);
  if p=q then q:=q-1{если он последний, просто отрезаем столбец}
  else{иначе}
   begin
    for j:=p to q-1 do{сдвигаем к этому столбцу}
    for i:=1 to n do{ысе элементы строк на 1 влево}
    a[i,j]:=a[i,j+1];
    q:=q-1;{уменьшаем ширину матрицы}
    writeln('Удаление столбца ',p);
    for i:=1 to n do
     begin
      for j:=1 to q do
      write(a[i,j]:5);
      writeln;
     end;
   end;
 end;
readln
end.

Leave a Comment

− 1 = 4