Примеры задач
Двумерные массивы
Пусть дана вещественная матрица размером 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.