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.Printlnend.
Пример работыn= 1546 -35 43 17 34 48 17 46 15 -45 13 -50 -46 13 421 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],' '); Writelnend.
Может, оно кому-то проще, но 23 строки против 5 - явно не упрощение)))Не говоря о том, что дольше писать и больше шансов наделать ошибок.