Другие языки программирования и технологии

Паскаль: Как удалить все положительные элементы в одномерном массиве?

Исправление ошибок Здесь.

По-хорошему, если размер массива заранее не известен (его вводит пользователь) , и размер этого массива в процессе выполнения программы может изменяться, то логично использовать динамический массив.
Но вы не указали версию Паскаля, в которой пишете программу. Если это Turbo Pascal, то можно организовать только суррогатный динамический массив:

program N62641202;
type TArray = array[ 1 .. 15000 ] of integer;
PArray = ^TArray;
var i, k, n:integer;
a:PArray;
begin
write('Введите кол-во элементов массива: ');
readln(n);
GetMem(a, n * SizeOf(integer));
writeln('Введите элементы массива: ');
for i := 1 to n do
begin
write('Введите A[',i,']: ');
readln(a^[ i ])
end;
k := 0;
for i := 1 to n do
if a^[ i ] <= 0 then
begin
inc(k);
{Следующая строка необязательна. В ней проверяется были ли
ранее уже пропущены положительные элементы. }
if i > k then
a^[ k ] := a^[ i ]
end;
{Если это действительно Turbo Pascal,
то следующие две строки удалить}
if k < n then
ReallocMem(a, k * SizeOf(integer));
writeln;
writeln('Преобразованный массив (размер ',k,'):');
for i:=1 to k do
write (a^[ i ]:5);
readln;
FreeMem(a, k * SizeOf(integer))
end.
Александр Кротов
Александр Кротов
51 590
Лучший ответ
http://programstud.ru/home/2-array/102-array
Адаптируй под положительные.
Пиши на мыло решу бесплатно
проверкой на >0 и последующим удалением, если нужно, то потом сдвижкой последующих элемнтов

Похожие вопросы