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

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

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

Задать свой вопрос
2 ответа
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
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)-gt;(x,i)).Where(xi-gt;xi[0].IsEven)
      .Select(xi-gt;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 - очевидно не упрощение)))
Не разговаривая о том, что длиннее писать и больше шансов наделать ошибок.
, оставишь ответ?
Имя:*
E-Mail:


Последние вопросы

Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт