Помогите пожалуйста составить программу на паскале...
Дан массив, содержащий 2015 неотрицательных целых чисел.
Необходимо найти в этом массиве количество таких элементов, которые равны среднему арифметическому двух элементов, расположенных сразу после него. Например, в массиве из 6 элементов, равных соответственно 2,3,1,5,6,4, есть три таких элемента, они расположены на первом, втором и четвертом месте и равны 2,3 и 5.
Другие языки программирования и технологии
Информатика 10 класс, массивы
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.
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.
Урматбек Одурбаев
Спасибо:)
Серега Шабадаш
Боюсь, что не прокатит, т. к. операция деления возвращает вещественный результат.
Забавно, что вышеотвечающие зациклились на делении: предлагают использовать либо вещественное деление (со всеми "прелестями" сравнения вещественных чисел), либо проверять чётность (что бессмысленно усложняет код)... А ведь деление вообще не нужно:
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]));
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);
Поясню. Если сумма двух элементов, следующих за проверяемым, кратна двум и частное от деления этой суммы на два равно проверяемому элементу, то увеличиваем счетчик.
Если же сумма не будет кратна двум, то среднее арифметическое не будет целочисленным, а, следовательно, не будет и равно проверяемому элементу.
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);
Поясню. Если сумма двух элементов, следующих за проверяемым, кратна двум и частное от деления этой суммы на два равно проверяемому элементу, то увеличиваем счетчик.
Если же сумма не будет кратна двум, то среднее арифметическое не будет целочисленным, а, следовательно, не будет и равно проверяемому элементу.
Урматбек Одурбаев
Спасибо:)
Похожие вопросы
- Помогите, пожалуйста, с информатикой. 10 класс. Надо найти ошибку в программе. Язык паскаль
- Задача по информатике. 10 класс
- Информатика, 10 класс
- Помогите решить задачу по информатике 10 класс
- Информатика 10 класс. Программирование на Паскаль
- Упорядочить массив по убыванию из 10 случайных чисел на промежутке от -500 до 500. Информатика, 9 класс.
- Информатика. Программирование. Обработка массивов данных. Помогите составить алгоритм и прог. код к нему.
- ПОМОГИТЕ ПОЖАЛУЙСТА!! ИНФОРМАТИКА!! РЕШИТЬ ЧЕРЕЗ МАССИВ!!!
- Задача - описать класс "Массив" с параметрами: длина массива, указатель на первый элемент массива
- Помогите, пожалуйста... Курс информатики, 9 класс. В паскале вообще ничего не понимаю((