Даны целочисленная матрица nx3, целые числа k, l (1<=k<=n, 1<=l<=n, k<>l).Преобразовать матрицу так, чтобы строка с исходным номером k непосредственно следовала за строкой с исходным номером l, сохранив порядок следования остальных строк.
Lapp
21.12.2009 9:23
Цитата(sweet angel @ 20.12.2009 19:38)
Даны целочисленная матрица nx3, целые числа k, l (1<=k<=n, 1<=l<=n, k<>l).Преобразовать матрицу так, чтобы строка с исходным номером k непосредственно следовала за строкой с исходным номером l, сохранив порядок следования остальных строк.
Вот, посмотри. Тут важно различать два случая: k<l и k>l. Если что-то непонятно, спрашивай, пожалуйста.
const m=3; n=9; type tLine= array[1..m]of integer; var a: array[1..n]of tLine; t: tLine; i,j,k,l: integer;
begin for i:=1 to n do for j:=1 to m do a[i,j]:=i*10+j; Write('k='); ReadLn(k); Write('l='); ReadLn(l); {сохраняем k-ю строку в буфер} t:=a[k]; {сдвигаем строки между l и k} if k<l then for i:=k+1 to l do a[i-1]:=a[i] {влево, если k<l} else begin for i:=k-1 downto l do a[i+1]:=a[i]; {вправо, если k>l} Inc(l) {корректируем l} end; a[l]:=t; {кладем строку из буфера на место l} for i:=1 to n do begin for j:=1 to m do Write(a[i,j]:3); WriteLn end; ReadLn end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.