В матрице определить три элемента с наибольшими значениями - Turbo Pascal

Узнай цену своей работы

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

В произвольно заданном двумерном массиве размера 6×3 определить три элемента с наибольшими значениями. Есть программа, но она пропускает наибольшее значение и выводит следующее после него. Подскажите в чем ошибка?
Листинг программы
  1. const
  2. n=6;
  3. m=3;
  4. var
  5. a:array [1..n,1..m] of integer;
  6. i,j,max1,max2,max3:integer;
  7. begin
  8. randomize;
  9. for i:=1 to n do
  10. for j:=1 to m do
  11. a[i,j]:=random(100);
  12. max1:=a[1,1];
  13. max2:=a[1,2];
  14. max3:=a[1,3];
  15. for i:=1 to n do
  16. begin
  17. for j:=1 to m do
  18. write (' ',a[i,j]);
  19. writeln;
  20. end;
  21. for i:=1 to n do
  22. for j:=1 to m do
  23. begin
  24. if (a[i,j]>max1) then
  25. max1:=a[i,j] else
  26. begin
  27. if (a[i,j]>max2) and (a[i,j] <> max1) then
  28. max2:=a[i,j];
  29. begin
  30. if (a[i,j]>max3) and (a[i,j] <> max1) and (a[i,j] <> max2) then
  31. max3:=a[i,j];
  32. end;
  33. end;
  34. end;
  35. writeln ('max1=',max1);
  36. writeln ('max2=',max2);
  37. writeln ('max3=',max3);
  38. end.

Решение задачи: «В матрице определить три элемента с наибольшими значениями»

textual
Листинг программы
  1. const n=6;
  2.       m=3;
  3. var  a:array [1..n,1..m] of integer;
  4.      i,j,max1,max2,max3:integer;
  5. begin
  6. randomize;
  7. writeln(' ');
  8. for i:=1 to n do
  9.  begin
  10.   for j:=1 to m do
  11.    begin
  12.     a[i,j]:=random(100);
  13.     write(a[i,j]:3);
  14.    end;
  15.   writeln;
  16.  end;
  17. max1:=a[1,1];
  18. max2:=a[1,1];
  19. max3:=a[1,1];
  20. for i:=1 to n do
  21. for j:=1 to m do
  22. if a[i,j]>max1 then
  23.  begin
  24.   max3:=max2;
  25.   max2:=max1;
  26.   max1:=a[i,j]
  27.  end
  28. else if a[i,j]>max2 then
  29.  begin
  30.   max3:=max2;
  31.   max2:=a[i,j];
  32.  end
  33. else if a[i,j]>max3 then max3:=a[i,j];
  34. writeln ('max1=',max1);
  35. writeln ('max2=',max2);
  36. writeln ('max3=',max3);
  37. end.

Объяснение кода листинга программы

  1. Переменная n инициализируется значением 6.
  2. Переменная m инициализируется значением 3.
  3. Создается переменная a, которая представляет собой массив целых чисел размером от 1 до n на 1 до m.
  4. Создаются три переменные i, j и max1, которые будут использоваться для поиска максимального значения в матрице.
  5. Выполняется цикл for, который проходит по каждому элементу массива a.
  6. Внутри первого цикла for выполняется второй цикл for, который проходит по каждому элементу массива a второго измерения.
  7. В каждой итерации второго цикла for присваивается значение случайного числа от 1 до 100 элементу массива a соответствующего индекса.
  8. Значение каждого элемента выводится на экран.
  9. После окончания второго цикла for выполняется первый цикл for, который обновляет максимальные значения max1, max2 и max3.
  10. Если текущий элемент массива a больше max1, то max3 устанавливается равным max2, max2 устанавливается равным max1, а max1 устанавливается равным текущему элементу.
  11. Если текущий элемент массива a больше max2, то max3 устанавливается равным max2, а max2 устанавливается равным текущему элементу.
  12. Если текущий элемент массива a больше max3, то max3 устанавливается равным текущему элементу.
  13. Выводится сообщение с максимальными значениями max1, max2 и max3.
  14. Конец программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы