Читайте также:
|
|
Вставить строку из нулей после строки с номером k.
Решение
Для решения этой задачи необходимо:
1. Первые k строк оставить без изменения.
2. Все строки после k-й сдвинуть на одну назад, это лучше начать с последней строки и идти до (k+1)-й.
3. Элементы строки k+1 присвоить заданное значение.
Кроме того, необходимо изменить размерность массива. Так как мы вставляем строку, то число строк будет на одну больше:
Const n = 5; m = 7;
Type dmyarray = Array[1..n+1, 1..m] Of Integer;
Var A: dmyarray;
Теперь опишем процедуру вставки:
Procedure Insert(k1: Integer; Var x: dmyarray);
Var i, j: Integer;
Begin
For i:=n Downto k1+1 Do
For j:=1 To m Do
x[i+1,j]:=x[i,j];
{элементу столбца j присваиваем элемент этого же столбца, но из предыдущей строки}
End;
Так как число строк меняется, то процедуру Print надо изменить, она должна выводить данное количество строк, начиная с первой:
Procedure Print1(n1: Integer; x: dmyarray);
Var i, j: Integer;
Begin
For i:=1 To n1 Do
Begin
For j:=1 To m Do Write(x[i,j]:4);
Writeln;
End;
End
Часть основной программы будет такой:
Begin
Init(A);
Print(n,A);
Writeln('Введите номер строки, после которой вставляем');
Readln(k);
Insert(k,A);
Print(n+1,A);
Readln;
End.
Примечания:
1. Если необходимо вставить после строки, удовлетворяющей некоторому условию, то надо лишь найти её номер и задача сводится к решению первого примера.
2. Если надо вставлять после всех строк с заданным условием, то надо увеличить размерность по строкам, и если строка удовлетворяет условию, то к ней применять вставку. При этом надо заметить, что лучше просматривать строки с последней и ввести счётчик вставленных строк.
3. Вставка перед строкой с данным номером изменится только тем, что сдвигать назад надо не с (k+1)-й строки, а с k-й.
4. Если надо вставлять столбцы, то размерность увеличивается для столбцов, а всё остальное практически не меняется: надо сдвинуть столбцы назад и на данное место записать новый столбец.
Дата добавления: 2015-08-17; просмотров: 44 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Пример 10 | | | Пример 13 |