ВУЗ:
Составители:
Рубрика:
36
writeln(’ Удалить все отрицательные элементы, расположенные
справа от максимального ’);
writeln;
{$R+} {Включаем контроль значений индексов}
clrscr;
n:=15;
randomize;
writeln('Исходный массив:');
for i:=1 to n do {генерация элементов массива}
begin
a[i]:=-20+random(41); {в диапазоне [-20; 20]}
write(a[i]:4);
end;
writeln;
Генератор случайных чисел активизируется командой randomize. Далее
в цикле случайным образом задаются элементы массива. Функция
random(41) возвращает случайное число в диапазоне от 0 до 40. Получает-
ся, что минимально возможное значение элементов массива будет равно -20
(к -20 прибавить 0, сгенерированный функцией
random), максимально воз-
можное – 20 (-20 плюс число 40, сгенерированное функцией
random). Сразу
же выводим значение элемента массива на экран. В цикле все элементы будут
выводиться в строчку, т. к. используется команда вывода
write. После генера-
ции и вывода всех элементов массива осуществляется переход на новую строку.
Вторая часть алгоритма – поиск максимального элемента. Предположим,
что первый элемент – максимальный, тогда запомним значение первого эле-
мента в переменной
max, а в переменную i_max, где будет запоминаться поло-
жение максимального элемента, запишем 1. Далее организуется цикл, в кото-
ром ищется элемент, больший чем
max.
max:=a[1];
i_max:=1;
for i:=2 to n do
if a[i]>max then
begin
max:=a[i];
i_max:=i;
end;
Далее, начиная с элемента, следующим за максимальным, организуется
цикл проверки элементов массива на знак (важно заметить, что в данном случае
нужно использовать цикл
while, т. к. длина массива будет изменяться, и, соот-
ветственно, число итераций цикла также будет меняться). Если число оказыва-
ется отрицательным, то удаляем этот элемент из массива, для чего организуется
еще один цикл, в котором на место удаляемого записывается стоящий следом
элемент.
Страницы
- « первая
- ‹ предыдущая
- …
- 35
- 36
- 37
- 38
- 39
- …
- следующая ›
- последняя »