Программа


CONST n=3; m=5;  { Длины первого и второго массивов }
TYPE Vector1Type=array[1..n] of integer;    { Тип первого исходного массива }
     Vector2Type=array[1..m] of integer;    { Тип второго исходного массива }
     Vector3Type=array[1..n+m] of integer;  { Тип формируемого массива }
VAR i:integer;  { Счетчик }
    Vector1:Vector1Type;    { Первый исходный массив }
    Vector2:Vector2Type;    { Второй исходный массив }
    Vector3:Vector3Type;    { Формируемый массив }
PROCEDURE InputVector1 (var B:Vector1Type); { Процедура ввода вектора }
  Var i:word; { Счетчик }
  Begin
    for i:=1 to n do { Цикл ввода элементов вектора }
      begin
        Write('Введите элемент первого массива [',i,'] ');
                                 { Вывод приглашения ввести элемент вектора }
        ReadLn(B[i]);   { Ввод элемента вектора }
      end
  End;
PROCEDURE InputVector2 (var B:Vector2Type); { Процедура ввода вектора }
  Var i:word; { Счетчик }
  Begin
    for i:=1 to m do { Цикл ввода элементов вектора }
      begin
        Write('Введите элемент второго массива [',i,'] ');
                                 { Вывод приглашения ввести элемент вектора }
        ReadLn(B[i]);   { Ввод элемента вектора }
      end
  End;

PROCEDURE OutputVector1 (B:Vector1Type); { Процедура вывода вектора }
  Var i:word;   { Счетчик }
  Begin
    for i:=1 to n do { Цикл вывода вектора }
      Write (B[i],'  ');  { Вывод элемента вектора }
    WriteLn  { Пропуск строки }
  End;
PROCEDURE OutputVector2 (B:Vector2Type); { Процедура вывода вектора }
  Var i:word;   { Счетчик }
  Begin
    for i:=1 to m do { Цикл вывода вектора }
      Write (B[i],'  ');  { Вывод элемента вектора }
    WriteLn  { Пропуск строки }
  End;
PROCEDURE OutputVector3 (B:Vector3Type); { Процедура вывода вектора }
  Var i:word;   { Счетчик }
  Begin
    for i:=1 to m+n do { Цикл вывода вектора }
      Write (B[i],'  ');  { Вывод элемента вектора }
    WriteLn  { Пропуск строки }
  End;

PROCEDURE ProcessVector (A:Vector1Type;B:Vector2Type;var C:Vector3Type);
                                                { Процедура создания вектора }
  Var i:word;   { Счетчик }
      Point1,Point2:integer;
            { Указатели на текущие элементы первого и второго массивов }
  Begin
    { Начальное определение указателей: }
    Point1:=1;
    Point2:=1;
    for i:=1 to n+m do { Цикл создания вектора }
      if (Point1<=n)and(Point2<=m) { Проверка корректности указателей }
        then if A[Point1]<B[Point2] { Сравнение значений злементов исходных массивов }
               then begin
                      C[i]:=A[Point1]; { Копирование элемента из первого массива }
                      Point1:=Point1+1 { Переопределение указателя первого массива }
                    end
               else begin
                      C[i]:=B[Point2]; { Копирование элемента из второго массива }
                      Point2:=Point2+1 { Переопределение указателя второго массива }
                    end
        else if (Point1<=n) { Выбор действия по корректности указателей }
               then begin
                      C[i]:=A[Point1]; { Копирование элемента из первого массива }
                      Point1:=Point1+1 { Переопределение указателя первого массива }
                    end
               else begin
                      C[i]:=B[Point2]; { Копирование элемента из второго массива }
                      Point2:=Point2+1 { Переопределение указателя второго массива }
                    end
  End;

BEGIN
  WriteLn;   { Пропуск строки }
  InputVector1(Vector1);  { Ввод первого массива }
  WriteLn;   { Пропуск строки }
  InputVector2(Vector2);  { Ввод второго массива }
  WriteLn;   { Пропуск строки }
  ProcessVector(Vector1,Vector2,Vector3);  { Создание массива }
  WriteLn('Вектор 1:');  { Вывод заголовка }
  OutputVector1(Vector1);  { Вывод первого вектора }
  WriteLn;   { Пропуск строки }
  WriteLn('Вектор 2:');  { Вывод заголовка }
  OutputVector2(Vector2);  { Вывод второго вектора }
  WriteLn;   { Пропуск строки }
  WriteLn('Вектор 3:');  { Вывод заголовка }
  OutputVector3(Vector3);  { Вывод сформированного вектора }
  WriteLn;   { Пропуск строки }
END.

Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию