Cоставить программу записи в массив B номеров четных элементов массива A. Как можно...

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

Cоставить программу записи в массив B номеров четных элементов массива A.

Как можно проще, пожалуйста


Информатика (313 баллов) | 51 просмотров
Дано ответов: 2
0 голосов
Правильный ответ
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 - явно не упрощение)))
Не говоря о том, что дольше писать и больше шансов наделать ошибок.
(150k баллов)
0 голосов

Const
   N = 13;
Var
   A,B:array[1..N] of integer;
   i,j:integer;
Begin
j:=0;
Write('Массив A(',N,'):');
For i:= 1 to N do
    Begin
    A[i]:=random(N);
    Write(' ',A[i]);
    if A[i] mod 2 = 0 then
       Begin
       j:=j+1;
       B[j]:=i;
       End;
    End;
WriteLn;
Write('Массив B(',j,'):');
For i:= 1 to j do
    Write(' ',B[i])
End.


Пример работы программы:

Массив A(13): 1 11 9 11 12 2 6 12 0 10 8 11 10
Массив B(8): 5 6 7 8 9 10 11 13

(34.0k баллов)