profile
Опубликовано 5 лет назад по предмету Информатика от sbatyaev19

Дан двумерный массив, элементы которого - целые числа. Вставьте новый столбец, каждый элемент которого число ноль, перед всеми столбцами, в которых встречается заданное число 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

  1. Ответ
    Ответ дан Gleb1Kosyrev
    //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