есть задание двумерный массив a(5*4) вещественных чисел. строку содержащую макс. эжлемент массива поменять со строкой содерж мин. элемент массива.
Заполнение массива я вроде сделал, и вывод первоначального массива тоже. Но немогу разобраться как определить макс или мин элемент и как сделать замену строк.
Я понимаю что где то на форуме это есть но найти не могу.
Код
const n=5; m=4; var a:array[1..n,1..m] of real; i: integer; {index stroki} j: integer; {index stolbca}
begin {vvod znacheniy matrici} randomize; for i:=1 to n do for j:=1 to m do a[i,j]:=random(99);
{vivod matrici do obrabotki} writeln ('soderjimoe do obrabotki'); for i:=1 to n do begin for j:=1 to m do write (a[i,j]:10); writeln; end; readln; end.
uses Crt; const n = 4; m = 5; type TMatrix = array [1..n,1..m] of Real;
{-----------------------------------------------------} Procedure ReadMatrix(var mx : TMatrix); var i,j : Integer; begin for i := 1 to n do for j := 1 to m do begin Write('Element [',i,',',j,']:'); ReadLn(mx[i,j]); end; end; {-----------------------------------------------------}
{-----------------------------------------------------} Procedure WriteMatrix(var mx : TMatrix); var i,j : Integer; begin for i := 1 to n do begin for j := 1 to m do Write(mx[i,j],' '); WriteLn; end; end; {-----------------------------------------------------}
{-----------------------------------------------------} Procedure ReformMatrix(var mx : TMatrix); var i,j : Integer; min,max : Real; min_id,max_id : Integer; temp : array [1..m] of Real; begin min := 1000000; max := -1000000; for i := 1 to n do for j := 1 to m do begin if (mx[i,j] < min) then begin min := mx[i,j]; min_id := i; end else if (mx[i,j] > max) then begin max := mx[i,j]; max_id := i; end; end; for i := 1 to n do for j := 1 to m do if (i = min_id) then begin temp[j] := mx[i,j]; mx[i,j] := mx[max_id,j]; end; for i := 1 to n do for j := 1 to m do if (i = max_id) then mx[i,j] := temp[j]; end; {-----------------------------------------------------}
var a : TMatrix; i,j : Integer; begin Clrscr; WriteLn('Input Matrix:'); ReadMatrix(a); WriteLn; WriteLn('Source Matrix:'); WriteMatrix(a); WriteLn; ReformMatrix(a); WriteLn('Result Matrix:'); WriteMatrix(a); ReadKey; end.
volvo
8.09.2005 10:12
kent, чтобы не делать 2 лишних цикла, можно добавить новый тип:
type { оставляем это } TMatrix = array [1..n,1..m] of Real;
{ и добавляем: } TV = array[1 .. m] of real; TM = array[1 .. n] of TV;
{ вместо этого: temp : array [1..m] of Real; } T: TV; begin { тут вычисляем индекс строки мин. и макс. элемента } { ... } { и меняем строки без всяких циклов: } T := TM(mx)[min_id]; TM(mx)[min_id] := TM(mx)[max_id]; TM(mx)[max_id] := T; end;
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.