Урок 15. Задача №5. Решение.

Урок 15. Задача №5.

Заполните массив целых чисел (длиной 8 элементов) случайными значениями от -5 до 5, выделите из него все неотрицательные числа во второй массив и выведете его на экран (если таких чисел меньше чем, его длина, то выведете только их, не обходя незаполненные ячейки).

type
  MyArr = array[1..8] of integer;

function FillFirstArray(other_arr: MyArr): MyArr;
var i, min, max: integer;
begin
  randomize();
  min := -5;
  max := 5;
  for i := 1 to length(other_arr) do
    other_arr[i] := min + random(max - min + 1);
  result := other_arr;
end;

function FillSecondArray(otherArr1, otherArr2: MyArr): MyArr;
var i, j: integer;
begin
  j := 1;
  for i := 1 to length(otherArr1) do
  begin
    if(otherArr1[i] >= 0) then
    begin
      otherArr2[j] := otherArr1[i];
      j += 1;
    end  else
    begin
      otherArr2[j] := 6;
      j += 1;
    end;
  end;
  result := otherArr2;
end;

procedure ShowFirstArray(arr_first: MyArr);
var i: integer;
begin
  writeln('FirstArray : ');
  for i := 1 to length(arr_first) do
    writeln(i, ') ', arr_first[i]);
  writeln();
end;

procedure ShowSecondArray(arr_second: MyArr);
var j: integer;
begin
  writeln('SecondArray : ');
  for j := 1 to length(arr_second) do
  if(arr_second[j] <> 6) then
    writeln(j, ') ', arr_second[j]);
end;

var i, j: integer;
  arrFirst, arrSecond: MyArr;
begin
  arrFirst := FillFirstArray(arrFirst);
  arrSecond := FillSecondArray(arrFirst, arrSecond);
  ShowFirstArray(arrFirst);
  ShowSecondArray(arrSecond);

  readln(); // Удержание консоль
end.// Завершение программы 
vedro-compota's picture

FillSecondArray - в сигнатуре достаточно одного исходного массива

_____________
матфак вгу и остальная классика =)

Firons's picture

type
  IntArr = array[1..8] of integer;

function FillFirstArray(other_arr: IntArr): IntArr;
var i, min, max: integer;
begin
  randomize();
  min := -5;
  max := 5;
  for i := 1 to length(other_arr) do
    other_arr[i] := min + random(max - min + 1);
  result := other_arr;
end;

function FillSecondArray(otherArr1: IntArr): IntArr;
var i, j: integer;
  otherArr2: IntArr;
begin
  j := 1;
  for i := 1 to length(otherArr1) do
  begin
    if(otherArr1[i] >= 0) then
    begin
      otherArr2[j] := otherArr1[i];
      j += 1;
    end  else
    begin
      otherArr2[j] := 6;
      j += 1;
    end;
  end;
  result := otherArr2;
end;

procedure ShowFirstArray(arr_first: IntArr);
var i: integer;
begin
  writeln('FirstArray : ');
  for i := 1 to length(arr_first) do
    writeln(i, ') ', arr_first[i]);
  writeln();
end;

procedure ShowSecondArray(arr_second: IntArr);
var j: integer;
begin
  writeln('SecondArray : ');
  for j := 1 to length(arr_second) do
  if(arr_second[j] <> 6) then
    writeln(j, ') ', arr_second[j]);
end;

var i, j: integer;
  arrFirst, arrSecond: IntArr;
begin
  arrFirst := FillFirstArray(arrFirst);
  arrSecond := FillSecondArray(arrFirst);
  ShowFirstArray(arrFirst);
  ShowSecondArray(arrSecond);

  readln(); // Удержание консоль
end.// Завершение программы 
vedro-compota's picture

решение засчитано

_____________
матфак вгу и остальная классика =)