Последние записи
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
- Сравнение языков на массивах. Часть 2
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
17th
Ноя
Удаление элементов из одномерного массива
Posted by obzor under Delphi
Удалить все элементы, большие данного числа А (А вводить с клавиатуры).
var i,j,a:integer;
len:integer=10;
p:array of integer;
begin
Write('a = '); Readln(a);
Randomize;
SetLength(p,len);
For i:=0 to len-1 do
begin
p[ i]:=Random(21);
Write(p[ i]:2,' ');
end;
Writeln;
Writeln;
i:=0;
Repeat
If p[ i]>a then
begin
For j:=i to len-2 do
p[j]:=p[j+1];
len:=len-1;
i:=i-1;
end;
i:=i+1;
Until i>=len;
For i:=0 to len-1 do
Write(p[ i]:2,' ');
Writeln;
Readln;
end.
А можно как-то сделать без процедуры SetLength?
ну, вряд ли.
процедура SetLength устанавливает размер для динамических массивов.
Можно, наверное, вместо динамических массивов использовать статические (ну, скажем, на 1000 элементов) и хранить отдельно счётчик N — сколько элементов в массиве заполнено.
Но зачем, если в PascalABC.NET есть нормальные динамические массивы?!
вот, смотрите:
const
MaxLen=10;
var i, j, A, n:integer;
p:array[0..MaxLen-1] of integer;
begin
Write('A = '); Readln(A);
Randomize;
n:=MaxLen;
For i:=0 to n-1 do begin
p[ i]:=Random(21);
Write(p[ i]:2,' ')
end;
WriteLn;
// Удаление из массива всех больше A - точнее, оставляем все элементы, которые меньше или равны A
j := 0;
for i := 0 to n - 1 do
if p[ i]<=A then
begin
p[j] := p[ i];
j += 1;
end;
n := j;
Write('Array after Delete:');
for i:=0 to n-1 do Write(p[ i]:2,' ');
WriteLn;
end.
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)