Программа


CONST N=4;   { Количество строк матрицы }
TYPE Matrix=array [1..N,1..N] of integer;
     VectorType=array [1..N] of integer; { Вектор-тип }
VAR Vector:VectorType; { Вектор }
    B:Matrix; { Матрица }
PROCEDURE InputMatrix (var B:Matrix); { Процедура ввода матрицы }
  Var i,j:integer;  { Счетчики }
  Begin
    for i:=1 to N do { Цикл ввода строк матрицы }
      for j:=1 to N do { Цикл ввода элементов матрицы }
        begin
          Write('Введите элемент [',i,',',j,'] ');
                                 { Вывод приглашения ввести элемент матрицы }
          ReadLn(B[i,j])   { Ввод элемента матрицы }
        end
  End;
PROCEDURE OutputMatrix (B:Matrix); { Процедура вывода матрицы }
  Var i,j:integer;   { Счетчики }
  Begin
    for i:=1 to N do { Цикл вывода строк матрицы }
      begin
        for j:=1 to N do { Цикл вывода элементов матрицы }
          Write (B[i,j]:5,'  ');  { Вывод элемента матрицы }
        WriteLn  { Вывод конца строки }
      end
  End;
PROCEDURE GetSumColumn (B:Matrix; Vector:VectorType);
                              { Процедура получения суммы элементов столбцов }
  Var i,j:integer;   { Счетчики }
      Sum:integer; { Сумма элементов столбца матрицы }
      SumFlag:boolean; { Флаг существования положительных элементов вектора }
  Begin
    SumFlag:=FALSE; { Сброс флага вектора }
    for j:=1 to N do { Цикл просмотра столбцов матрицы }
      if Vector[j]>0 then { Условие набора суммы по j-ому столбцу матрицы }
      begin
        SumFlag:=TRUE; { Подъем флага вектора }
        Sum:=0; { Обнуление суммы }
        for i:=1 to N do Sum:=Sum+B[i,j]; { Цикл набора суммы элементов столбца }
        WriteLn('Сумма элементов ',j,'-го столбца матрицы =',Sum)
                                            { Вывод суммы элементов столбца }
      end;
    if not SumFlag then WriteLn('В заданном векторе нет положительных элементов')
            { Вывод сообщения при отсутствии положительных элементов вектора }
  End;
PROCEDURE ReplacementColumn(var B:Matrix; Vector:VectorType);
                                          { Замена вектором столбцов матрицы }
  Var Flag:boolean; { Флаг наличия отрицательных элементов }
      i,j:integer; { Счетчики }
  Begin
    for j:=1 to N do { Цикл просмотра столбцов матрицы }
    begin
      Flag:=FALSE; { Сброс флага }
      for i:=1 to N do { Цикл просмотра столбца }
      begin
        Flag:=B[i,j]<0; { Вычисление флага }
        if Flag then Break { Прерывание цикла при обнаружении отрицательного элемента }
      end;
      if not Flag then for i:=1 to N do B[i,j]:=Vector[i]
            { Замена столбца без отрицательных элементов элементами вектора }
    end
  End;
PROCEDURE InputVector (var Vector:VectorType); { Процедура ввода вектора }
  Var i:integer; { Счетчик }
  Begin
    for i:=1 to N do { Цикл ввода элементов вектора }
      begin
        Write('Введите элемент [',i,'] ');
                                 { Вывод приглашения ввести элемент вектора }
        ReadLn(Vector[i])   { Ввод элемента вектора }
      end
  End;
PROCEDURE OutputVector (B:VectorType); { Процедура вывода вектора }
  Var i:integer;   { Счетчик }
  Begin
    for i:=1 to N do { Цикл вывода вектора }
      Write (B[i],'  ');  { Вывод элемента вектора }
    WriteLn  { Вывод конца строки }
  End;
BEGIN
  WriteLn; { Пропуск строки }
  InputMatrix(B); { Ввод матрицы }
  WriteLn; { Пропуск строки }
  InputVector(Vector); { Ввод вектора }
  WriteLn; { Пропуск строки }
  WriteLn('Исходная матрица: ');  { Вывод заголовка }
  OutputMatrix(B); { Вывод матрицы }
  WriteLn; { Пропуск строки }
  WriteLn('Вектор: ');  { Вывод заголовка }
  OutputVector(Vector); { Вывод вектора }
  WriteLn; { Пропуск строки }
  GetSumColumn(B,Vector); { Получение сумм элементов столбцов матрицы }
  WriteLn; { Пропуск строки }
  ReplacementColumn(B,Vector); { Замена вектором столбцов }
  WriteLn('Модифицированная матрица: ');  { Вывод заголовка }
  OutputMatrix(B); { Вывод матрицы }
END.

Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию