Дан двумерный массив, элементы которого - целые числа. Вставьте новый столбец, каждый...

0 голосов
50 просмотров

Дан двумерный массив, элементы которого - целые числа. Вставьте новый столбец, каждый элемент которого число ноль, перед всеми столбцами, в которых встречается заданное число X.
Формат входных данных
В первой строке входного файла даны три числа: N, M и X (-1000 \le X \le 1000), где N - количество строк в массиве, а M - количество столбцов (1 \le N, M \le 100). В следующих N строках находится по M чисел, по абсолютному значению не превосходящих 1000.
Формат выходных данных
В выходной файл выведите полученный массив. При выводе разделяйте элементы массива пробелами и переводами строк.
Вход
2 2 2
1 2
1 -2
Выход
1 0 2
1 0 -2


Информатика (22 баллов) | 50 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

//PascalABC.NET 3.2 сборка 1318

Var
  ma,mabuf:array of array of integer;
  i,j,n,m,x,mark,k,h,newm,kar:integer;
begin
readln(n);
readln(m);
newm:=m;
readln(x);
setlength(ma,n);
setlength(mabuf,n);
for i:=0 to n-1 do
  begin
    setlength(ma[i],m);
    setlength(mabuf[i],m);
  end;
for i:=0 to n-1 do
  for j:=0 to m-1 do
    readln(ma[i][j]);
kar:=-1;
for j:=0 to m-1 do
  begin
    inc(kar);
    for i:=0 to n-1 do 
     if ma[i][j]=x then
        begin
        inc(newm);
        for h:=0 to n-1 do
          setlength(mabuf[h],newm);
          for h:=0 to n-1 do
            mabuf[h][kar]:=0;
        inc(kar);
        break;
        end;
    for i:=0 to n-1 do
      mabuf[i][kar]:=ma[i][j];
  end;
for i:=0 to n-1 do
setlength(ma[i],newm);
writeln;
for i:=0 to n-1 do
  begin
    for j:=0 to newm-1 do
      begin
        ma[i][j]:=mabuf[i][j];
        write(ma[i][j],' ');
      end;
    writeln;
  end;
end.

Пример ввода:
2 2 2
1 2
1 -2
Пример вывода:
1 0 2
1 0 -2

(38.6k баллов)