Программа
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.
Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию