Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Пример 12

Двумерные массивы | Найти сумму элементов | Пример 3 | Пример 5 | Пример 7 |


Читайте также:
  1. I) Эффективность военных преобразований 1860-1870-х годов на примере Русско-японской войны.
  2. I. Примерный перечень вопросов рубежного контроля.
  3. II. Примерный перечень вопросов к зачету (экзамену) по всему курсу.
  4. III. РАЗЛИЧНЫЕ СХЕМЫ УПРАВЛЕНИЯ ГОСУДАРСТВЕННОЙ СОБСТВЕННОСТЬЮ: ПРИМЕРЫ ИЗ ИСТОРИЧЕСКОГО ОПЫТА И ЗАРУБЕЖНОЙ ПРАКТИКИ
  5. Look at the family tree and complete the sentences as in the example (Посмотри на семейное древо и заполни пропуски как в примере).
  6. Lt;question>Выберите правильный пример аннотации.
  7. XVI. Переведите на калмыцкий язык, заменяя подчеркнутые слова предложенными примерами.

Вставить строку из нулей после строки с номером 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

mybiblioteka.su - 2015-2024 год. (0.007 сек.)