На этой странице рассматриваем задачи Array30 - Array31 из задачника Абрамяна, в которых речь идет о количестве соседних элементах массива (левых и правых), удовлетворяющих указанному условию.
Сразу сделаем одно важное замечание: во всех следующих программах ввод данных по умолчанию определен как ручной (через оператор ввода read). Но если вы хотите ввод сделать автоматическим (через генератор случайных чисел random), то ввод данных в программе замените на следующий кусок кода:
///АВТОМАТИЧЕСКИЙ ВВОД ДАННЫХ
randomize; //генератор псевдослучайных чисел
N := 10 + random(191); //количество чисел в массиве
writeln('Массив ', N, ' случайных целых чисел:');
writeln;
for i := 1 to N do
begin
mass[i] := -100 + random(201);
write(' ', mass[i]); //выводим элементы массива
end;
writeln;
writeln;
**procedure** Randomize;
: Инициализирует датчик псевдослучайных чисел.2)**procedure** Randomize(seed: integer);
: Инициализирует датчик псевдослучайных чисел, используя значение seed. При одном и том же seed генерируются одинаковые псевдослучайные последовательности.**function** Random(maxValue: integer): integer;
: Возвращает случайное целое в диапазоне от 0 до maxValue - 1.2)**function** Random(a,b: integer): integer;
: Возвращает случайное целое в диапазоне от a до b.3)**function** Random: real;
: Возвращает случайное вещественное в диапазоне [0..1).**function** Random(maxValue: integer): integer;
: Возвращает случайное целое в диапазоне от 0 до maxValue - 1.2)**function** Random(a,b: integer): integer;
: Возвращает случайное целое в диапазоне от a до b.3)**function** Random: real;
: Возвращает случайное вещественное в диапазоне [0..1). В последнем случае вы получите массив случайно сгенерированных целых чисел с диапазона [-100, 100].
Array30. Дан массив размера N. Найти номера тех элементов массива, которые больше своего правого соседа, и количество таких элементов. Найденные номера выводить в порядке их возрастания.
var
Mass: array[1..100] of integer;
i, N, Q: byte;
begin
write(' N = ');
readln(N);
writeln('Введите ', N, ' целых чисел:');
writeln;
for i := 1 to N do
read(mass[i]); //вводим элементы массива
writeln;
Q := 0; //количество элементов, больших своего правого соседа
write('Результат: ');
{ Элементы проверяем в порядке возрастания их номеров: }
for i := 1 to N - 1 do
if mass[i] > mass[i + 1] then //i-й элемент больше (i + 1)-го
begin
inc(Q); //увеличиваем количество таких элементов на 1
write(' ', i) //и выводим номер элемента
end;
writeln;
if Q > 0 then
write('Количество элементов больших правого соседа: ', Q)
else write('Таких элементов нет.')
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647**type** byte;
: Представляет 8-битовое целое число без знака.Диапазон значений: 0..255**procedure** Inc(**var** i: integer);
: Увеличивает значение переменной i на 1 Array31. Дан массив размера N. Найти номера тех элементов массива, которые больше своего левого соседа, и количество таких элементов. Найденные номера выводить в порядке их убывания.
var
Mass: array[1..100] of integer;
i, N, Q: byte;
begin
write(' N = ');
readln(N);
writeln('Введите ', N, ' целых чисел:');
writeln;
for i := 1 to N do
read(mass[i]); //вводим элементы массива
writeln;
Q := 0; //количество элементов, больших своего левого соседа
write('Результат: ');
{ Элементы проверяем в порядке убывания их номеров: }
for i := N downto 2 do
if mass[i] > mass[i - 1] then //i-й элемент больше (i - 1)-го
begin
inc(Q); //увеличиваем количество таких элементов на 1
write(' ', i) //и выводим номер элемента
end;
writeln;
if Q > 0 then
write('Количество элементов больших левого соседа: ', Q)
else write('Таких элементов нет.')
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647**type** byte;
: Представляет 8-битовое целое число без знака.Диапазон значений: 0..255**procedure** Inc(**var** i: integer);
: Увеличивает значение переменной i на 1