Программа


Program C(input,output);
{ Ввод матрицы,
  если кол-во нечет эл-тов
  гл диагонали < чет эл-тов
  2-го солбца, то поменять
  2-й столбец с побочной
  диагональю, иначе разделить
  все элементы на 2 }
Type
  matrix=array[1..3,1..3] of integer; { Описание типа "матрица" }
Var
  t:matrix;                           { Матрица }
  i,k:integer;                        { Счетчики }
  NumberOdd,NumberEven:integer;       { Переменные для подсчета четных
                                        и нечетных элементов }
  Buf:integer;                   { Переменная для переноса элементов матрицы }
Procedure WriteMatrix(t:matrix); { Процедура вывода матрицы }
  Begin
    Writeln(' -------------------------');    { Вывод верхней линии таблицы }
    for i:=1 to 3 do                          { Вывод строк матрицы }
      Begin
        for k:=1 to 3 do Write(' | ',t[i,k]:5); { Вывод элемента матрицы }
        Writeln(' |');                          { Вывод правой линии таблицы }
        Writeln(' -------------------------')
        { Вывод разделяющей линии таблицы }
      End;
    End;
BEGIN
  for i:=1 to 3 do               { Цикл ввода строк матрицы }
    for k:=1 to 3 do             { Цикл ввода элементов строк }
      Begin
        Write('Введите элемент матрицы t(',i,',',k,') ');
        { Приглашение ввести элемент матрицы }
        Readln(t[i,k]) { Ввод элемента матрицы }
      End;
  WriteLn;                                     { Пропуск строки }
  WriteLn('Заданная матрица:');
  WriteMatrix(t);                              { Вывод заданной матрицы }
  NumberOdd:=0;  { Обнуление количества нечетных элементов главной диагонали }
  NumberEven:=0; { Обнуление количества четных элементов второго столбца }
  for i:=1 to 3 do                             { Цикл просмотра матрицы }
    Begin
      if Odd(t[i,i]) then NumberOdd:=NumberOdd+1;
      { Подсчет количества нечетных элементов главной диагонали }
      if not Odd(t[i,2]) then NumberEven:=NumberEven+1
      { Подсчет количества четных элементов второго столбца }
    End;
  if NumberOdd<NumberEven  { Сравнение результатов просмотра }
                           { и выбор варианта обработки матрицы }
    then                                    { Перенос элементов матрицы }
      for i:=1 to 3 do
        begin
          Buf:=t[i,2];
          { Присваивание элемента столбца промежуточной переменной }
          t[i,2]:=t[i,3-i+1];{ Присваивание элементу столбца
                               значения элемента побочной диагонали }
          t[i,3-i+1]:=Buf { Присваивание элементу побочной диагонали
                            промежуточной переменной }
        end
    else for i:=1 to 3 do for k:=1 to 3 do t[i,k]:=t[i,k] div 2;
                          { Целочисленное деление всех элементов на 2 }
  WriteLn('Полученная матрица:');
  WriteMatrix(t)  { Вывод полученной матрицы }
END.


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