Не получается вызвать SetLength для операнда данного типа - Pascal
Формулировка задачи:
program Kursa4;
uses crt;
var X: array[1..10] of integer;
n,i,j,z,y,m: integer;
begin
writeln('Enter n');{Длина массива}
readln(n);
SetLength(X,n); {Задаем длину массива}
randomize;
for i:=0 to n-1 do
X[i]:=random(40)+1;{Заполняем массив}
for i:=0 to n do {Упорядочиваем его по убыванию}
for j:=i to n-1 do
if X[i]<X[j] then
begin
z:=X[i];
X[i]:=X[j];
X[j]:=z;
end;
write('Array X: ');{Полученный массив}
for i:=0 to n-1 do
write (X[i]:4);
writeln();
writeln('Enter y');
readln(y);
m:= n-1;
i := 0;
while i <= m do
if X[i] = y then
begin
for j := i to m - 2 do {удаляем}
X[j] := X[j+2];
m := m -2
end else i := i + 1;
write('Result: ');{Ответ}
for i:= 0 to m do
write(X[i]:4);
readln;
end.Решение задачи: «Не получается вызвать SetLength для операнда данного типа»
textual
Листинг программы
var x:array of integer;
n,i,j,z,y: integer;
begin
write('ведите размер массива n');
readln(n);
randomize;
setlength(x,n);
for i:=0 to n-1 do
x[i]:=random(40)+1;{Заполняем массив}
for i:=0 to n-2 do {Упорядочиваем его по убыванию}
for j:=i+1 to n-1 do
if x[i]<x[j] then
begin
z:=x[i];
x[i]:=x[j];
x[j]:=z;
end;
write('Array X: ');{Полученный массив}
for i:=0 to n-1 do
write (x[i]:4);
writeln;
write('Enter y=');
readln(y);
i:=0;
while i < n do
if x[i] = y then
begin
for j := i to n - 2 do {удаляем}
x[j] := x[j+1];
n :=n-1
end
else i := i + 1;
write('Result: ');{Ответ}
for i:= 0 to n-1 do
write(x[i]:4);
end.
Объяснение кода листинга программы
- Объявление переменных:
x: массив целых чисел (array of integer)n, i, j, z, y: целые числа
- Ввод размера массива:
- Выводится сообщение
ведите размер массива n - Считывается значение
nс клавиатуры
- Выводится сообщение
- Заполнение массива случайными числами:
- Генерируются случайные значения для каждого элемента массива
x
- Генерируются случайные значения для каждого элемента массива
- Упорядочивание массива по убыванию:
- Применяется алгоритм сортировки, где каждый элемент сравнивается с другими и меняется, если необходимо, чтобы массив был упорядочен по убыванию
- Ввод значения
y:- Выводится сообщение
Enter y= - Считывается значение
yс клавиатуры
- Выводится сообщение
- Удаление элемента из массива
xс заданным значениемy:- Происходит проверка каждого элемента массива на равенство значению
y - Если значение
yнайдено, оно удаляется из массива путем сдвига всех элементов после удаленного элемента - Размер массива
nуменьшается
- Происходит проверка каждого элемента массива на равенство значению
- Вывод результата:
- Выводится сообщение
Result:за которым следует полученный массивxпосле удаления элемента - Выводятся все элементы массива
xв виде упорядоченной последовательности.
- Выводится сообщение