Даны целочисленная матрица nx3, целые числа k, l (1<=k<=n, 1<=l<=n, k<>l).Преобразовать матрицу так, чтобы строка с исходным номером k непосредственно следовала за строкой с исходным номером l, сохранив порядок следования остальных строк.
Lapp
21.12.2009 5: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;
beginfor i:=1to n dofor j:=1to 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 thenfor i:=k+1to l do a[i-1]:=a[i] {влево, если k<l}elsebeginfor i:=k-1downto l do a[i+1]:=a[i]; {вправо, если k>l}
Inc(l) {корректируем l}end;
a[l]:=t; {кладем строку из буфера на место l}for i:=1to n dobeginfor j:=1to m doWrite(a[i,j]:3);
WriteLn
end;
ReadLn
end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.