Другие языки программирования и технологии

Ребят, кто знает Pascal ABC, помогите.

Помогите, пожалуйста. Даны два одномерных целочисленных массива А и В, состоящих из N
элементов каждый (N – заданное натуральное число) . Сформировать массив,
элементы которого являются пересечением указанных массивов, и расположить
его элементы по неубыванию. Сам уже два дня пробую, никак не получается, ошибки одни. Спасибо заранее.
KQ
Kenan Qarani
1 351
Как вариант: 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:
Элементов в массиве нет!
Eduard Stibert
Eduard Stibert
90 702
Лучший ответ
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.
Макс Душкин
Макс Душкин
1 648
Макс Душкин Поправка, я тут немного ереси напорол. Вот так надо формировать массив:

{ Формируем массив пересечений }
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'Пересечений нет. ');
Макс Душкин Блин, тут много косяков. Вредно ночью кодить :( Лучше через множества организовать.
напишите мне в агент, попробую помочь
Сергей Климин
Сергей Климин
1 402