дан массив A(M,N) и вектор B(M). Эллементы первого столбца массива упорядочены по убыванию. Включить в массив вектор, не нарушая при этом упорядочность.
Я вначале добавлял вектор в конец массива, а потом сортировал. А нужно "раздвинуть" строки и вставить вектор.
как это сделать? (я понимаю, что для вас это легко, но прошу...)
(Название темы поменяй)...
Идешь по всем строкам, пока первый элемент НЕ меньше первого элемента вставляемого вектора. Как только станет меньше - ты нашел позицию, куда вставлять. Перемещаешь вектора ОТ ПРЕДПОСЛЕДНЕГО до найденного номера на один назад (кстати, попутно - вопрос: что должно быть с последним вектором матрицы? Удаляется? Или это такой динамический массив векторов?), и вставляешь новый вектор в найденную позицию...
Массив должен быть динамическим. ни одной строки нельзя потерять!!
я так и действовал, но что-т не работает. напишите код пожалуйста(с того момента, как находится элллемент менше 1-го еллемента массива).
а давай лучше ты напишешь свой код - который не работает?
и еще... ты на чем пишешь-то? на чистом паскале? и массив должен быть именно динамическим?
именно динамический!! я пишу на си, но если будет код на паскале, то я пойму и реализую на си.
пока что С.
если хочеш, то переноси. но мне бы код на паскале(для визуального восприятия логики реализации программы, а синтаксис изменить не тяжело)
{$R-}
const
vectorSize = 10;
type
TType = Word;
Type
PVector = ^TVector;
TVector = Array[1 .. vectorSize] of TType;
PDynMatrix = ^TDynMatrix;
TDynMatrix = Array[1 .. 1] of PVector;
const
insertVector: TVector = (17, 0, 0, 0, 0, 0, 0, 0, 0, 0);
Var
T, mxDynamic: PDynMatrix;
n, i, j: Word;
Begin
writeln('before: ', memavail);
Write('num lines = '); ReadLn(n);
GetMem(mxDynamic, n * SizeOf(PVector));
For i := 1 To n Do
GetMem(mxDynamic^[i], SizeOf(TVector));
For i := 1 To n Do Begin
mxDynamic^[i]^[1] := 10 * (n - i);
For j := 2 To vectorSize Do
mxDynamic^[I]^[J] := I*J;
End;
For i := 1 To n Do Begin
WriteLn;
For j := 1 To vectorSize Do
Write(mxDynamic^[I]^[J]:4);
End;
i := 1;
while mxDynamic^[i]^[1] > insertVector[1] do inc(i);
GetMem(T, (n + 1) * SizeOf(PVector));
Move(mxDynamic^[1], T^[1], n * SizeOf(PVector));
FreeMem(mxDynamic, n * SizeOf(PVector));
inc(n);
mxDynamic := T;
Move(mxDynamic^[i], mxDynamic^[i + 1], (n - i) * SizeOf(PVector));
GetMem(mxDynamic^[i], SizeOf(TVector));
mxDynamic^[i]^ := insertVector;
For i := 1 To n Do Begin
WriteLn;
For j := 1 To vectorSize Do
Write(mxDynamic^[I]^[J]:4);
End;
For i := 1 To n Do
FreeMem(mxDynamic^[i], SizeOf(TVector));
FreeMem(mxDynamic, n * SizeOf(PVector));
writeln('after: ', memavail);
End.
попробую... спасибо большое!