Программа


CONST M=5;   { Количество строк матрицы и элементов вектора }
      N=4;   { Количество солбцов матрицы }

TYPE Vector=array [1..M] of integer; { Вектор-тип }
PROCEDURE InputVector (var B:Vector); { Процедура ввода вектора }
  Var i:word; { Счетчик }
  Begin
    for i:=1 to M do { Цикл ввода элементов вектора }
      begin
        Write('Введите элемент [',i,'] ');
                                 { Вывод приглашения ввести элемент вектора }
        ReadLn(B[i]);   { Ввод элемента вектора }
      end
  End;
PROCEDURE OutputVector (B:Vector); { Процедура вывода вектора }
  Var i:word;   { Счетчик }
  Begin
    for i:=1 to M do { Цикл вывода вектора }
      Write (B[i],'  ');  { Вывод элемента вектора }
    WriteLn  { Вывод конца строки }
  End;

TYPE Matrix=array [1..M,1..N] of integer;
PROCEDURE InputMatrix (var B:Matrix); { Процедура ввода матрицы }
  Var i,j:word;  { Счетчики }
  Begin
    for i:=1 to M do { Цикл ввода строк матрицы }
      for j:=1 to N do { Цикл ввода элементов матрицы }
        begin
          Write('Введите элемент [',i,',',j,'] ');
                                 { Вывод приглашения ввести элемент матрицы }
          ReadLn(B[i,j]);   { Ввод элемента матрицы }
        end
  End;
PROCEDURE OutputMatrix (B:Matrix); { Процедура вывода матрицы }
  Var i,j:word;   { Счетчики }
  Begin
    for i:=1 to M do { Цикл вывода строк матрицы }
      begin
        for j:=1 to N do { Цикл вывода элементов матрицы }
          Write (B[i,j]:3,'  ');  { Вывод элемента матрицы }
        WriteLn  { Вывод конца строки }
      end
  End;
PROCEDURE LetColumn (var B:Matrix; V:Vector); { Процедура переопределения столбцов матрицы }
  Var i,j:word;   { Счетчики }
      Negativ:boolean; { Флаг наличия отрицательного элемента в столбце }
  Begin
    for j:=1 to N do { Цикл просмотра столбцов }
    begin
      Negativ:=FALSE; { Начальное определение флага }
      for i:=1 to M do { Цикл просмотра элементов столбца }
        Negativ:=Negativ or (B[i,j]<0); { Переопределение флага }
      if not Negativ then { Проверка наличия отрицательных элементов в столбце }
        for i:=1 to M do { Цикл переопределения элементов столбца }
          B[i,j]:=V[i]; { Переопределение флага }
    end
  End;
FUNCTION GetSum (B:Matrix):integer; { Функция набора суммы }
  Var i,j:word;   { Счетчики }
      Zerro:boolean; { Флаг наличия нулевого элемента в строке }
      Sum:integer; { Сумма }
  Begin
    Sum:=0; { Начальное определение суммы }
    for i:=1 to M do { Цикл просмотра строк }
      if not Odd(i) then
      begin
        Zerro:=FALSE; { Начальное определение флага }
        for j:=1 to N do { Цикл просмотра элементов строки }
          Zerro:=Zerro or (B[i,j]=0);{ Переопределение флага }
        if Zerro then { Проверка наличия нулевых элементов в строке }
          for j:=1 to N do { Цикл набора суммы }
            Sum:=Sum+B[i,j]; { Набор суммы }
      end;
    GetSum:=Sum { Определение значения функции }
  End;
VAR A:Matrix; { Матрица }
    V:Vector; { Вектор }
BEGIN
  WriteLn; { Пропуск строки }
  InputMatrix(A); { Ввод матрицы }
  WriteLn; { Пропуск строки }
  WriteLn('Исходная матрица: ');  { Вывод заголовка }
  OutputMatrix(A); { Вывод матрицы }

  WriteLn; { Пропуск строки }
  InputVector(V); { Ввод вектора }
  WriteLn; { Пропуск строки }
  WriteLn('Вектор: ');  { Вывод заголовка }
  OutputVector(V); { Вывод вектора }

  WriteLn; { Пропуск строки }
  LetColumn(A,V); { Замена столбцов в матрице }
  WriteLn('Матрица с переопределенными столбцами: ');  { Вывод заголовка }
  OutputMatrix(A); { Вывод матрицы }

  WriteLn; { Пропуск строки }
  WriteLn('Сумма элементов ', GetSum(A)) { Получение и вывод суммы }
END.

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