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

Решение. Алгоритм решения достаточно простой



Читайте также:
  1. Берлин принимает решение
  2. БЛОК МЕТОДИК, СВЯЗАННЫХ С РЕШЕНИЕМ ЧЕЛОВЕКОМ ЖИЗНЕННЫХ ПРОБЛЕМ
  3. Ваше решение
  4. Ваше сегодняшнее решение относительно семьи
  5. Внесение изменений в решение о выпуске
  6. Внесение изменений в решение о выпуске и/или проспект российских депозитарных расписок
  7. Возможность заказчика принять решение об одностороннем отказе от исполнения контракта в соответствии с гражданским законодательством.

 

Алгоритм решения достаточно простой. Указывается номер удаляемой строки - k, а затем все остальные строки, расположенные "ниже" последовательно перемещаются на одну строку "вверх".

Этот процесс аналогичен перемещению элементов в одномерном массиве, с которым мы уже встречались. Надо лишь заметить, что при организации цикла перемещения строк, не обязательно указывать вторые индексы элементов, а вполне достаточно выполнить следующий цикл:

for i:= k to n - 1 do a[i]:= a[i + 1];

Здесь k - номер удаляемой строки. Как видите, вторые индексы массива a[i, j] не указываются и этого достаточно, чтобы выполнялось перемещение строк целиком.

 

Процедура удаления заданной строки из массива и вывод нового массива на экран:

 

Procedure distance_line(n, m, k: integer; var a: t);

Var

i, j: integer;

Begin

for i:= k to n - 1 do a[i]:= a[i+1];

writeln('Новый массив без ', k, '-й строки ');

for i:= 1 to n - 1 do

Begin

for j:= 1 to m do write(a[i, j]:6, ' ');

writeln

End

end;

Формирование двумерного массива с помощью функции случайных чисел.

Ввод номера удаляемой строки. Последовательное перемещение строк. Вывод нового массива на экран.

 

Программа

Program Problem6a;

Const

n = 5; m = 6;

Type

s = array [1..m] of integer;

t = array [1..n] of s;

Var

a: t;

k: integer;

{----------------------------------------------------------------------------------------}

Procedure create_two(n, m: integer; var a: t);

Var

i, j: integer;

Begin

writeln('Заданный двумерный массив целых чисел');

randomize;

for i:= 1 to n do

Begin

for j:= 1 to m do

Begin

a[i, j]:= random(201) - 100;

write(a[i, j]:6, ' ')

End;

writeln

End

End;

{----------------------------------------------------------------------------------------}

Procedure distance_line(n, m, k: integer; var a: t);

Var

i, j: integer;

Begin

for i:= k to n - 1 do a[i]:= a[i + 1];

writeln('Новый массив без ', k, '-й строки ');

for i:= 1 to n - 1 do

Begin

for j:= 1 to m do write(a[i, j]:6, ' ');

writeln

End

End;

{----------------------------------------------------------------------------------------}

Begin

create_two(n, m, a);

write('Укажите номер строки, для удаления ');

readln(k);

distance_line(n, m, k, a)

End.

Для решения примера (б) требуется немногим больше. Во-первых, при описании массива следует учесть, что в новом массиве будет на 1 столбец больше, т.е. в каждой строке будет больше на одни элемент, а значит, описывая элементы строки надо записать:

Type

s = array [1..m+1] of integer;

так как будет новый столбец, то и его надо описать:

f = array [1..n] of integer;

таким образом, полностью раздел описаний должен быть таким:

 

Const

n = 5; m = 6;

Type

s = array [1..m+1] of integer;

t = array [1..n] of s;

f = array [1..n] of integer;

Var

a: t;

c: f;

i, j, k: integer;

 

Далее следует создать не только двумерный массив, но и новый столбец для вставки. Это можно сделать с помощью функций случайных чисел.

После этого необходимо указать то место в массиве, а точнее говоря, тот столбец, куда будет вставляется новый.

"Передвинуть" все остальные столбцы на 1 к концу, "влево".

И, последнее, вставить заданный столбец на указанное место.

Мы более подробно остановимся на перемещении столбцов и вставке нового столбца.

В отличие от перемещения строк, для перемещения столбцов нужно организовать двойной цикл, с указанием индексов перемещаемых элементов:

 

write('Введите номер столбца, куда вставляется новый ');

readln(k);

for i:= 1 to n do

for j:= m + 1 downto k + 1 do a[i, j]:= a[i, j-1];

 

Для вставки нового столбца, также необходим цикл:

 

{Вставка нового столбца}

writeln('Массив с новым ', k, '-м столбцом');

for i:= 1 to n do a[i, k]:= c[i]; здесь c[i] - новый столбец элементов.

 

Процедура вставки нового столбца в заданный двумерный массив будет следующей:

 

Procedure insert_column(n, m, k: integer; c: f; var a: t);

Var

i, j: integer;

Begin

Перемещение столбцов в конец для освобождения места}

for i:= 1 to n do

for j:= m + 1 downto k + 1 do a[i, j]:= a[i, j-1];

{Вставка нового столбца}

writeln('Массив с новым ', k, '-м столбцом');

for i:= 1 to n do a[i, k]:= c[i];

for i:= 1 to n do

Begin

for j:= 1 to m + 1 do write(a[i, j]:6, ' ');

writeln

End

End;


Дата добавления: 2015-07-11; просмотров: 70 | Нарушение авторских прав






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