Помогите, пожалуйста. Даны два одномерных целочисленных массива А и В, состоящих из N
элементов каждый (N – заданное натуральное число) . Сформировать массив,
элементы которого являются пересечением указанных массивов, и расположить
его элементы по неубыванию. Сам уже два дня пробую, никак не получается, ошибки одни. Спасибо заранее.
Другие языки программирования и технологии
Ребят, кто знает Pascal ABC, помогите.
Как вариант: http://pastebin.com/cwRnaQkc
Пример работы 1:
Массив А:
-23 13 27 -5 7 17 -11 -37 -22 -21
Массив B:
-42 16 -36 -11 -8 -24 32 -44 -24 13
Массив C:
13 -11
Пример работы 2:
Массив А:
31 -25 1 -32 1 -48 -36 8 -5 -8
Массив B:
-42 -12 -29 -40 15 17 3 33 44 40
Массив C:
Элементов в массиве нет!
Пример работы 1:
Массив А:
-23 13 27 -5 7 17 -11 -37 -22 -21
Массив B:
-42 16 -36 -11 -8 -24 32 -44 -24 13
Массив C:
13 -11
Пример работы 2:
Массив А:
31 -25 1 -32 1 -48 -36 8 -5 -8
Массив B:
-42 -12 -29 -40 15 17 3 33 44 40
Массив C:
Элементов в массиве нет!
Kenan Qarani
Спасибо большое
program q166343590;
uses
crt;
const
N = 10;
MAX_NUM = 10;
MIN_NUM = 0;
type
TNumArray = array[1..N] of integer;
var
A, B, ResultArray : TNumArray;
I, J, Tmp, ElementCount : integer;
{ Функция проверяет, входит ли число в массив }
function ExistInArray(NumArray : TNumArray; Num : integer) : Boolean;
var
I : Integer;
begin
ExistInArray := False;
for I := 1 to N do
if (NumArray[I] = Num) then
begin
ExistInArray := True;
Exit;
end;
end {ExistInArray};
begin
clrscr;
Randomize;
{ Заполняем случайными значениями массив A }
writeln('Первый массив: ');
for I := 1 to N do
begin
A[I] := Random(MAX_NUM + ABS(MIN_NUM) + 1) + MIN_NUM;
write(A[I]:4);
end;
{ Заполняем случайными значениями массив B }
writeln(#13#10#13#10'Второй массив: ');
for I := 1 to N do
begin
B[I] := Random(MAX_NUM + ABS(MIN_NUM) + 1) + MIN_NUM;
write(B[I]:4);
end;
{ Формируем массив пересечений }
ElementCount := 0;
for I := 1 to N do
for J := 1 to N do
if ((not ExistInArray(ResultArray, A[I])) and (A[I] = B[J])) then
begin
Inc(ElementCount);
ResultArray[ElementCount] := A[I];
end;
{ Сортируем массив пересечений }
for I := 1 to (ElementCount - 1) do
for J := 1 to (ElementCount - I) do
if (ResultArray[J] > ResultArray[J + 1]) then
begin
Tmp := ResultArray[J];
ResultArray[J] := ResultArray[J + 1];
ResultArray[J + 1] := Tmp;
end;
{ Выводим получившийся массив }
writeln(#13#10#13#10'Массив пересечений: ');
for I := 1 to ElementCount do write(ResultArray[I]:4);
write(#13#10#13#10'Нажмите любую клавишу для продолжения. . ');
readkey;
end.
uses
crt;
const
N = 10;
MAX_NUM = 10;
MIN_NUM = 0;
type
TNumArray = array[1..N] of integer;
var
A, B, ResultArray : TNumArray;
I, J, Tmp, ElementCount : integer;
{ Функция проверяет, входит ли число в массив }
function ExistInArray(NumArray : TNumArray; Num : integer) : Boolean;
var
I : Integer;
begin
ExistInArray := False;
for I := 1 to N do
if (NumArray[I] = Num) then
begin
ExistInArray := True;
Exit;
end;
end {ExistInArray};
begin
clrscr;
Randomize;
{ Заполняем случайными значениями массив A }
writeln('Первый массив: ');
for I := 1 to N do
begin
A[I] := Random(MAX_NUM + ABS(MIN_NUM) + 1) + MIN_NUM;
write(A[I]:4);
end;
{ Заполняем случайными значениями массив B }
writeln(#13#10#13#10'Второй массив: ');
for I := 1 to N do
begin
B[I] := Random(MAX_NUM + ABS(MIN_NUM) + 1) + MIN_NUM;
write(B[I]:4);
end;
{ Формируем массив пересечений }
ElementCount := 0;
for I := 1 to N do
for J := 1 to N do
if ((not ExistInArray(ResultArray, A[I])) and (A[I] = B[J])) then
begin
Inc(ElementCount);
ResultArray[ElementCount] := A[I];
end;
{ Сортируем массив пересечений }
for I := 1 to (ElementCount - 1) do
for J := 1 to (ElementCount - I) do
if (ResultArray[J] > ResultArray[J + 1]) then
begin
Tmp := ResultArray[J];
ResultArray[J] := ResultArray[J + 1];
ResultArray[J + 1] := Tmp;
end;
{ Выводим получившийся массив }
writeln(#13#10#13#10'Массив пересечений: ');
for I := 1 to ElementCount do write(ResultArray[I]:4);
write(#13#10#13#10'Нажмите любую клавишу для продолжения. . ');
readkey;
end.
Макс Душкин
Поправка, я тут немного ереси напорол. Вот так надо формировать массив:
{ Формируем массив пересечений }
ElementCount := 0;
for I := 1 to N do
if (not ExistInArray(ResultArray, A[I])) then
for J := 1 to N do
if (A[I] = B[J]) then
begin
Inc(ElementCount);
ResultArray[ElementCount] := A[I];
Break;
end;
{ Формируем массив пересечений }
ElementCount := 0;
for I := 1 to N do
if (not ExistInArray(ResultArray, A[I])) then
for J := 1 to N do
if (A[I] = B[J]) then
begin
Inc(ElementCount);
ResultArray[ElementCount] := A[I];
Break;
end;
Макс Душкин
А вот так его выводить:
{ Выводим получившийся массив }
if (ElementCount <> 0) then
begin
writeln(#13#10#13#10'Массив пересечений: ');
for I := 1 to ElementCount do write(ResultArray[I]:4);
end
else writeln(#13#10#13#10'Пересечений нет. ');
{ Выводим получившийся массив }
if (ElementCount <> 0) then
begin
writeln(#13#10#13#10'Массив пересечений: ');
for I := 1 to ElementCount do write(ResultArray[I]:4);
end
else writeln(#13#10#13#10'Пересечений нет. ');
Макс Душкин
Блин, тут много косяков. Вредно ночью кодить :( Лучше через множества организовать.
напишите мне в агент, попробую помочь
Похожие вопросы
- Pascal ABC. Помогите исправить ошибку в программе.
- Pascal ABC помогите пожалуйста.
- Проблема с программой в Pascal ABC,Встречено ';',а ожидалось ':'. Если менять, то вылетает ещё ошибка с if
- Программа в pascal abc
- помогите с задачей по Pascal abc!!!
- Помогите с задачей на Pascal ABC
- Как в Pascal ABC на модуле Graph ABC провести вертикальную ось симметрии.
- Как в Pascal ABC с помощью модуля graph abc нарисовать это
- Pascal abc и Pascal одно и тоже? Или разные языки программирования?
- В чём отличия Pascal ABC, Free Pascal, Lazarus, Delphi?