Массивы А и В упорядочены по возрастанию их элементов. Объединить эти массивы в один массив С, упорядоченный по возрастанию элементов. Если в массивах А и В имеются одинаковые элементы, то в массиве С учитывается один из них.
А=(-3,7,8,10,15)
В=(4,6,8,16)
Другие языки программирования и технологии
Разработать программу анализа или преобразования массива в Паскале
Добюрого времени суток.
Посмотрел и я здесь http://pastie.org/private/uk5cmpzwwpzgw6qr5zetyq. и получил такой результат
-3 7 8 10 15 4 6 16
и это не удивительно, поскольку функционал программы начитнается со строчки
for i:= 1 to 5 do C[ i ]:=A[ i ];
т. е. один в один переписвается первый массив и условие "Объединить эти массивы в один массив С, упорядоченный по возрастанию элементов" не выполняется.
Предлагаю свое решение.
uses Crt;
const
A : array[1..5] of Integer = (-3,7,8,10,15);
B : array[1..4] of Integer = (4,6,8,16);
var
C : array[1..9] of Integer;
j, k : Integer;
function CopyMass(A,B: array of Integer): Integer;
var
i, j, k : Integer;
procedure CopyElement;
begin
k := k + 1;
C[k] := B[j];
j := j + 1;
end;
begin
k := 0;
j := 0;
for i:=0 to High(A) do begin
k := k + 1;
C[k] := A[ i ];
while (B[j] < A[i+1]) and (j <= High(B)) do CopyElement;
if B[j] = A[i+1] then j := j + 1;
end;
while j <= High(B) do CopyElement;
CopyMass := k;
end;
begin
ClrScr;
{определим с какого массива начинаем заполнять массив С}
if A[1] < B[1] then k := CopyMass(A,B) else k := CopyMass(B,A);
for j:=1 to k do Write(C[j]:3);
ReadLn;
end.
Эта программа дает такой результат
-3 4 6 7 8 10 15 16
Удачи!
Посмотрел и я здесь http://pastie.org/private/uk5cmpzwwpzgw6qr5zetyq. и получил такой результат
-3 7 8 10 15 4 6 16
и это не удивительно, поскольку функционал программы начитнается со строчки
for i:= 1 to 5 do C[ i ]:=A[ i ];
т. е. один в один переписвается первый массив и условие "Объединить эти массивы в один массив С, упорядоченный по возрастанию элементов" не выполняется.
Предлагаю свое решение.
uses Crt;
const
A : array[1..5] of Integer = (-3,7,8,10,15);
B : array[1..4] of Integer = (4,6,8,16);
var
C : array[1..9] of Integer;
j, k : Integer;
function CopyMass(A,B: array of Integer): Integer;
var
i, j, k : Integer;
procedure CopyElement;
begin
k := k + 1;
C[k] := B[j];
j := j + 1;
end;
begin
k := 0;
j := 0;
for i:=0 to High(A) do begin
k := k + 1;
C[k] := A[ i ];
while (B[j] < A[i+1]) and (j <= High(B)) do CopyElement;
if B[j] = A[i+1] then j := j + 1;
end;
while j <= High(B) do CopyElement;
CopyMass := k;
end;
begin
ClrScr;
{определим с какого массива начинаем заполнять массив С}
if A[1] < B[1] then k := CopyMass(A,B) else k := CopyMass(B,A);
for j:=1 to k do Write(C[j]:3);
ReadLn;
end.
Эта программа дает такой результат
-3 4 6 7 8 10 15 16
Удачи!
Отправил на ящик код программы...
Посмотри тут
Похожие вопросы
- Разработайте программу, которая заполняет двумерный массив натуральными числами по спирали. Максимальное число N задается.
- Аналог ассоциативного массива в Паскале.
- Напишите программу, которая находит в массиве количество элементов, равных заданному значению X .
- Помогите плиз с массивом по паскалю!!))никак не могу решить(((
- двумерный динамический массив в паскале
- Вопрос про массивы в паскале
- Написать программу, которая формирует два массива чисел
- Написать программу работы с одномерным массивом из 15 вещественных элементов для решения задач:
- Составьте программу, отыскивающую наибольший элемент массива A(N) из числа принадлежащим интервалу {min,(min+max\2))
- Составьте программы и проверьте их выполняемость на Паскале