Дан одномерный массив чисел. Если произведение элементов с чётными номерами больше...

0 голосов
22 просмотров

Дан одномерный массив чисел. Если произведение элементов с чётными номерами больше произведения элементов с нечётными номерами, то найти номер максимального элемента, иначе – номер минимального элемента.


Информатика (20 баллов) | 22 просмотров
Дано ответов: 2
0 голосов
Правильный ответ
// PascalABC.NET 3.3, сборка 1607 от 31.12.2017
// Внимание! Если программа не работает, обновите версию!

type
  R=sequence of integer;

begin
  var a:=ArrRandom(ReadInteger('n='),-99,99); a.Println;
  var P:R->BigInteger:=t->t.Aggregate(BigInteger(1),(p,q)->p*q);
  if P(a.Where(t->t.IsEven))>P(a.Where(t->t.IsOdd))
  then Writeln('Номер максимального элемента: ',a.IndexMax+1)
  else Writeln('Номер минимального элемента: ',a.IndexMin+1)
end.

Примеры
n= 17
31 98 7 42 -70 -98 -34 43 -48 -40 -28 -35 15 26 25 1 -66
Номер минимального элемента: 6

n= 15
95 88 -82 96 87 -68 17 40 -66 1 60 -25 -78 -55 -55
Номер максимального элемента: 4
(150k баллов)
0

Помогите, пожалуйста, с блок-схемой

0 голосов

Program n1;
const n=15;
var a: array[1..n] of integer;
pc,pn,nmin,nmax,max,min,i: integer;
begin
randomize;
pc:=1;
pn:=1;
write('массив: ');
for i:=1 to n do begin
a[i]:=random(100);
write(a[i],' ');
end;
writeln;
for i:=1 to n do if i mod 2=0 then pc:=pc*a[i] else pn:=pn*a[i];
if pc>pn then begin
max:=a[1];
for i:=2 to n do if a[i]>max then begin
max:=a[i];
nmax:=i;
end;
writeln('номер максимального элемента: ',nmax);
end else
begin
min:=a[i];
for i:=2 to n do if a[i]min:=a[i];
nmin:=i;
end;
write('номер минимального элемента: ',nmin);
end;
end.

(149k баллов)