Примеры задач

Двумерные массивы


Пусть дана вещественная матрица размером n*m, все элементы которой различны. В каждой строке выберите элемент с наименьшим значением, затем среди этих чисел выберите наибольшее. Укажите индексы найденного элемента.

Методика решения

Пример. :
Пусть дана матрица: .
Выбирая наименьшие элементы в строках, получим 3 числа: (-5,3; -2,5; 2). Среди них наибольшим является число 2, а его индексы в матрице – [3,3].

Используемые переменные:
a – вещественная матрица,
I,j – номера элементов массива,
I1,j1 – номера наименьшего элемента строки,
I2,j2 – номера наибольшего из наименьших элементов строк,
min, max – хранят значение наименьшего и наибольшего элемента на данный момент.

Для начала при помощи циклов считываем с экрана элементы массива и выводим массив на экран.
Нахождение минимального элемента строки: присвоим min значение первого элемента строки, а переменным I1,j1 индексы этого элемента (1,1), затем просматриваем всю строку, сравниваем min с остальными элементами этой строки, если найдется элемент, меньший min , то min присваиваем значение этого элемента, а переменным I1,j1 его индексы.
Аналогично ищем максимальный среди наименьших элементов строк. Просматриваем первую строку, находим её наименьшее значение, присваиваем это значение иеременной max, а переменным I2,j2 присваиваем индексы этого элемента ( I1,j1 ). Затем просматриваем остальные строки, ищем в каждой наименьшее значение, сравниваем max с минимальным элементом каждой строки ( min ), если найдется значение min больше max , то max присваиваем это значение, а переменным I2,j2 индексы этого элемента ( I1,j1 ).
Выводим на экран значение max и индексы искомого элемента I2,j2 .

Листинг программы

Program ex3_3;
Uses Crt;
Var a:Array[1..10,1..10] of Real;
n,m,i,j,i1,j1,i2,j2:Byte; min,max:Real;
Begin ClrScr;
Writeln('Введите кол-во строк и столбцов');
Read(n,m); Writeln;
For i:=1 To n Do
Begin
Writeln('Введите ',m,' эл. ',i,'-й строки матрицы');
For j:=1 To m Do Read(a[i,j]){ввод}
End;
Writeln('Ваша матрица:');
For i:=1 To n Do
Begin
For j:=1 To m Do Write(a[i,j]:7:2);
Writeln {вывод}
End;
For i:=1 To n Do
Begin
min:=a[i,1]; i1:=i; j1:=1;
For j:=1 To m Do {выбор элемента}
If a[i,j]
Begin
min:=a[i,j]; i1:=i; j1:=j
>End;
If i=1 Then
Begin max:=min; i2:=i1; j2:=j1
End
Else
If min>max Then
Begin
max:=min; i2:=i1; j2:=j1
End
End;
Writeln('Максимальным из минимумов строк является элемент ',max:6:2,' с индексами [',i2,',',j2,']');
Readkey;
End.

Запустить программу






Назад