Описать процедуру RemoveForInc(A,N,K),удаляющую из вещественного мас-сива A размера N элемент с номером К - Pascal ABC
Формулировка задачи:
Описать процедуру RemoveForInc(A,N,K),удаляющую из вещественного мас-
сива A размера N элемент с номером К (уменьшая N). С помощью этой проце-
дуры удалить "лишние"элементы массива так, чтобы оставшиеся элементы
оказались упорядоченными по возрастанию: первый элемент не удаляется,
второй элемент удаляется, если он меньше первого, третий — если он меньше
предыдущего элемента, оставленного в массиве, и т. д. Например, массив 5.5,
2.5, 4.6, 7.2, 5.8, 9.4 должен быть преобразован к виду 5.5, 7.2, 9.4.
очень нужно завтра сдавать (((((((((((((((
Решение задачи: «Описать процедуру RemoveForInc(A,N,K),удаляющую из вещественного мас-сива A размера N элемент с номером К»
textual
Листинг программы
const nmax=100;
type mas=array[1..nmax] of real;
procedure RemoveForInc(var a:mas;var n:integer; k:integer);
var i:integer;
begin
if k=n then n:=n-1
else
begin
for i:=k to n-1 do
a[i]:=a[i+1];
n:=n-1;
end;
end;
var a:mas;
n,i:integer;
begin
randomize;
repeat
write('Размер массива А от 2 до ',nmax,' n=');
readln(n);
until n in [2..nmax];
writeln('Массив A');
for i:=1 to n do
begin
a[i]:=10*random;
write(a[i]:5:1)
end;
writeln;
i:=2;
while i<=n do
if a[i]<a[i-1] then RemoveForInc(a,n,i)
else inc(i);
writeln('Измененный массив');
for i:=1 to n do
write(a[i]:5:1);
end.
Объяснение кода листинга программы
- В первой строке кода объявлена константа nmax, которая определяет максимальное значение размера массива.
- Затем объявлен тип данных mas, который представляет собой массив целых чисел.
- Далее объявлена процедура RemoveForInc, которая принимает три аргумента: a (массив), n (размер массива) и k (номер элемента для удаления). Также в этой процедуре объявлены две переменные i и n, которые используются для выполнения операций.
- В условии if k=n then n:=n-1 проверяется, равен ли номер элемента для удаления размеру массива. Если это так, то размер массива уменьшается на единицу.
- Если условие не выполняется, то в цикле for i:=k to n-1 do происходит перенос элементов массива с индексами от k до n-1 на один шаг влево.
- После этого переменная n уменьшается на единицу.
- Вторая часть кода начинается с объявления переменных a, n и i.
- Затем выполняется цикл repeat, в котором пользователю предлагается ввести размер массива от 2 до nmax.
- После ввода размера массива выполняется цикл for i:=1 до n do, в котором каждый элемент массива a[i] присваивается значению 10*random.
- После этого выводится сообщение 'Массив A'.
- Затем выполняется цикл while, в котором проверяется, если текущий элемент массива a[i] меньше предыдущего элемента, то вызывается процедура RemoveForInc.
- Если условие не выполняется, то переменная i увеличивается на единицу.
- После окончания цикла while выводится измененный массив.
- Наконец, выводится сообщение 'Измененный массив' и выполняется цикл for i:=1 до n do, в котором выводится значение элемента массива a[i].