Вставка новых элементов в массив
- В массив после максимального элемента вставить элемент, равный 0.
Пример исходного массива A: 1 2 5 1 0 1 2 (максимальный элемент A[3]=5)
Массив после вставки элемента: 1 2 5 0 1 0 1 2
Алгоритм вставки элемента в массив:
1. Сдвинуть элементы от позиции вставляемого элемента в конец.
2. В позицию вставляемого элемента вписать нужное значение.
3. Количество элементов n увеличить на 1 .
Общий алгоритм программы следующий:
1 . Введем массив А.
2 . Найдем индекс max элемента.
3 . Вставим после max 0.
4 . Выведем получившийся массив.
Полный текст программы:
Const maxN = 20; {максимально возможное количество элементов в массиве}
Type IndexEll = 1 .. maxN; {индексы массива лежат в интервале от 1 до maxN}
arrInt = array[1.. maxN] of integer; {массив целых чисел, содержащий до maxN элементов}
Var a : arrInt; {массив}
n : integer; {количество элементов в массиве}
i : IndexEll; {переменная для сканирования массива}
max: IndexEll; {номер max элемента массива}
Begin
randomize; { генерируем случайные элементы}
n :=random(6)+5; {n в интервале 5..10}
for i :=1 to n do
A[i]:=random(19)-9; {вводим в ячейки массива случайные значения }
max:=1;
for i :=2 to n do
if A[i]>A[max] then max:=i; {ищем индекс max элемента}
{вставляем 0 после максимального элемента}
for i :=n downto max+1 do
A[i+1]:=A[i]; {сначала сдвигает "хвост” массива вправо}
A[max+1]:=0; {заносим в следующий за максимальным элемент 0}
Inc(n); {увеличиваем количество элементов массива}
writeln('Массив А после вставки: '); {выводим массив}
for i :=1 to n do
write(A[ i ]:3);
end.
Данная программа демонстрирует модульный подход к решению задач - задача разбивается на подзадачи, полученные подзадачи решаются отдельно. Если подзадача не решается непосредственно, то она снова разбивается на подзадачи и т.д. Такой подход называется "программирование сверху вниз".
Замечание: данная программа таит в себе ошибку. Если n=20, то после вставки еще одного элемента n станет равной 21, и, скорее всего, программа повиснет (потому что элементов в массиве может быть НЕ БОЛЬШЕ 20). Следовательно, при вставке элементов необходимо следить, чтобы было n<=maxN .
<<Назад