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

Информатика 10 класс, массивы

Помогите пожалуйста составить программу на паскале...

Дан массив, содержащий 2015 неотрицательных целых чисел.
Необходимо найти в этом массиве количество таких элементов, которые равны среднему арифметическому двух элементов, расположенных сразу после него. Например, в массиве из 6 элементов, равных соответственно 2,3,1,5,6,4, есть три таких элемента, они расположены на первом, втором и четвертом месте и равны 2,3 и 5.
var
a: array [1..2015] of integer;
i: integer;
begin
randomize;
for i:= 1 to 2015 do
begin
a[i]:=random(2015);
end;

for i:= 1 to 2013 do
begin
if a[i]=(a[i+1]+a[i+2])/2 then
writeln('a[', i, ']=', a[i]);
end;
end.
Ali Rza
Ali Rza
2 558
Лучший ответ
Серега Шабадаш Боюсь, что не прокатит, т. к. операция деления возвращает вещественный результат.
Забавно, что вышеотвечающие зациклились на делении: предлагают использовать либо вещественное деление (со всеми "прелестями" сравнения вещественных чисел), либо проверять чётность (что бессмысленно усложняет код)... А ведь деление вообще не нужно:

counter := 0;
for i := 1 to 2015 - 2 do if a[i] * 2 = a[i + 1] + a[i + 2] then inc(counter);

А можно и без if, но это уже трюкачество:

counter := 0;
for i := 1 to 2015 - 2 do inc(counter, ord(a[i] * 2 = a[i + 1] + a[i + 2]));
"valera" ;) А и правда! Среднее арифметическое попутало...
Объявляете массив
A : array[1..2015] of Integer;

Заполняете его каким-то образом. Например, случайными числами от 0 до 99

for i:=1 to 2015 do A[i] := Random(100);

а затем проверяете элементы на соответствие условию

Counter := 0;
for i:=1 to 2013 do
if ((A[i+1] + A[i+2]) mod 2 = 0) and (A[i] = (A[i+1] + A[i+2]) div 2) then Inc(Counter);

Поясню. Если сумма двух элементов, следующих за проверяемым, кратна двум и частное от деления этой суммы на два равно проверяемому элементу, то увеличиваем счетчик.

Если же сумма не будет кратна двум, то среднее арифметическое не будет целочисленным, а, следовательно, не будет и равно проверяемому элементу.
Серега Шабадаш
Серега Шабадаш
59 627