дюди выручайте оооч срочно есть задание Дана матрица n x m найти минимальный и максимальный элементы в строке и заменить первый и последний элементы строк соотстветственно... помогите!!! Code: program number2; var a:array[1..3,1..4] of longint; max,min,buf,k,n,i,j,maxj,minj:longint; begin assign(input,'input.txt'); reset(input); assign(output,'output.txt'); rewrite(output); readln(n); readln(k); for i:=1 to k do for j:=1 to n do read(a[i,j]); for i:=1 to k do begin max:=a[i,1]; min:=a[i,1]; maxj:=1; minj:=1; for j:=1 to n do begin if a[i,j]>max then maxj:=j else if a[i,j]<min then minj:=j; end; if (maxj=n)and(minj=1) then begin buf:=a[i,1]; a[i,1]:=a[i,n]; a[i,n]:=buf; end; buf:=a[i,1]; a[i,1]:=a[i,maxj]; a[i,maxj]:=buf; buf:=a[i,n]; a[i,n]:=a[i,minj]; a[i,minj]:=buf; end; for i:=1 to k do begin for j:=1 to n do write(a[i,j],' '); writeln; end; end. вот задача только как-то неправильно рабтает, достаточно отредить , помогитеееее
Если я правильно понял задание, то надо для каждой строки минимальный элемент переставить местами с первым, а максимальный с последним. Тогда это выглядит так: Code: type index=word; var i, j, j_max, j_min : index; A1, AM, Amax, Amin : integer; BEGIN for i:=1 to N do begin j_max := 1; j_min := 1; for j:=1 to M do begin if A[i,j] > A[i,j_max] then j_max := j; if A[i,j] < A[i,j_min] then j_min := j; end; A1 := A[i,1]; Amin := A[i,j_min] AM := A[i,M]; Amax := A[i,j_max]; A[i,1] := Amin; A[i,j_min] := A1; A[i,M] := Amax; A[i,j_max] := AM; end; END. Всю фигню с вводом-выводом и константами допиши сам.
Вроде бы в задании не сказано "обменять", написано "заменить", а про старое значение элемента массива ничего не упоминается, если я правильно понял. Можно и вот так Code: program laba1; const maxrow = 3; maxcol = 4; type TMass = array [1..maxrow, 1..maxcol] of integer; function FillArray : TMass; var i, j : integer; a : TMass; begin Randomize; for i := 1 to maxrow do for j := 1 to maxcol do a[i][j] := Random (1000) - 500; FillArray := a end; procedure PrintArray (a : TMass); var i, j : integer; begin for i := 1 to maxrow do for j := 1 to maxcol do writeln (a[i][j]); writeln ('====='); end; procedure FindMinMax (a : TMass; row : integer; var min : integer; var max : integer); var j : integer; begin for j := 1 to maxcol do begin if j = 1 then begin min := a [row][j]; max := min; end else begin if min > a [row][j] then min := a [row][j]; if max < a [row][j] then max := a [row][j]; end; end; end; procedure ReplaceArr (var a : TMass; row, min, max : integer); begin a[row][1] := min; a[row][maxcol] := max; end; var a : TMass; max, min, i : integer; begin a := FillArray; PrintArray (a); for i := 1 to maxrow do begin ///max := FindMax (a, 3); ///writeln (max); FindMinMax (a, i, min, max); writeln (min); writeln (max); writeln ('====='); ReplaceArr (a, i, min, max); end; PrintArray (a); end.
Вот потому и пишу, что надо чётко формулировать задание. А то в задании сказано "заменить соответственно", а в коде делает "обменять несоответственно": buf:=a[i,1]; a[i,1]:=a[i,maxj]; a[i,maxj]:=buf; buf:=a[i,n]; a[i,n]:=a[i,minj]; a[i,minj]:=buf;