Найти наибольший чётный положительный элемент выше главной диагонали матрицы - Turbo Pascal (33544)

Формулировка задачи:

Здравствуйте. Нужна помощь по теме "двумерные массивы"! Задача. Дан двумерный массив. Найти наибольший чётный положительный элемент выше главной диагонали и наименьший отрицательный элемент ниже главной диагонали с указанием их индексов. Создать новый массив, в котором найденные элементы поменяются местами. Заранее спасибо за помощь! Требования преподавателя - числа задаются не рандомно , сделать так чтобы можно было вводить размерность массива( количество строк,столбцов)


textual

Код к задаче: «Найти наибольший чётный положительный элемент выше главной диагонали матрицы - Turbo Pascal (33544)»

program mass;
 
const m = 16;
 
var n, i, j, ia, ja, ib, jb, t: integer;
    a: array [1..m, 1..m] of integer;
    fa, fb: boolean;
 
begin
  //ввод размерности массива
  repeat
    write('n = ');
    readln(n);
    if (n < 2) or (n > m) then writeln('n out of range 2..', m, ', reenter.')
  until (n >= 2) and (n <= m);
  //ввод массива
  writeln('Enter array:');
  for j := 1 to n do
    for i := 1 to n do
      begin
        write('a[', i, ', ', j, '] = ');
        readln(a[i, j])
      end;
  //печать исходного массива, поиск нужных элементов
  fa := false;
  fb := false;
  writeln('Source array:');
  for j := 1 to n do
    begin
      for i := 1 to n do
        begin
          write(a[i, j]:6);
          if (i > j) and not(odd(a[i, j])) and (a[i, j] >= 0)
            then if fa
              then begin
                if (a[i, j] > a[ia, ja])
                  then begin
                    ia := i;
                    ja := j
                  end
              end
              else begin
                ia := i;
                ja := j;
                fa := true;
              end;
          if (i < j) and (a[i, j] < 0)
            then if fb
              then begin
                if (a[i, j] < a[ib, jb])
                  then begin
                    ib := i;
                    jb := j
                  end
              end
              else begin
                ib := i;
                jb := j;
                fb := true
              end
        end;
      writeln
    end;
  //вывод найденных элементов
  write('Max even positive element above principal diagonal: ');
  if fa then writeln('a[', ia, ', ', ja, '] = ', a[ia, ja])
        else writeln('not found.');
  write('Min negative element below principal diagonal: ');
  if fb then writeln('a[', ib, ', ', jb, '] = ', a[ib, jb])
        else writeln('not found.');
  //обмен элементов и печать массива, если это возможно
  if fa and fb
    then begin
      t := a[ia, ja];
      a[ia, ja] := a[ib, jb];
      a[ib, jb] := t;
      writeln('Result:');
      for j := 1 to n do
        begin
        for i := 1 to n do write(a[i, j]:6);
        writeln
      end
    end
    else writeln('No change.');
  readln //ждём нажатия <Enter> перед закрытием программы
end.
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.


СДЕЛАЙТЕ РЕПОСТ

11   голосов, оценка 3.909 из 5

Источник
Похожие ответы