1. Современное решение
// PascalABC.NET 3.2, сборка 1417 от 28.03.2017
// Внимание! Если программа не работает, обновите версию!
begin
var a:=ArrRandom(ReadInteger('n='),-50,50); a.Println;
var b:=a.Select((x,i)->(x,i)).Where(xi->xi[0].IsEven)
.Select(xi->xi[1]+1).ToArray;
b.Println
end.
Пример работы
n= 15
46 -35 43 17 34 48 17 46 15 -45 13 -50 -46 13 42
1 5 6 8 12 13 15
2. Школьное решение в стиле "ТурбоПаскаль 1983г."
const
nn=500;
var
i,n,k:integer;
a,b:array[1..nn] of integer;
begin
Write('n=');
Read(n);
Randomize;
k:=0;
for i:=1 to n do begin
a[i]:=Random(101)-50;
Write(a[i],' ');
if a[i] mod 2 = 0 then begin
k:=k+1;
b[k]:=i
end
end;
Writeln;
for i:=1 to k do
Write(b[i],' ');
Writeln
end.
Может, оно кому-то проще, но 23 строки против 5 - явно не упрощение)))
Не говоря о том, что дольше писать и больше шансов наделать ошибок.