Помощь - Поиск - Пользователи - Календарь
Полная версия: Массивы
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Катя
Помогите решить задачу по массивам!
Даны два одномерных массива чисел А и В. Сформировать из них массив С, который содержит элементы А, которе есть в В более, чем в одном экземпляре.
Спасибо зарание!
volvo
const
  n = 10;
type
  arr = array[1 .. n] of integer;
var
  a, b, c: arr;
...
begin
  ...
  { здесь вводим массивы A, B }

  count := 0;
  for i := 1 to n do begin
    in_b := 0;
    for j := 1 to n do
      if b[j] = a[i] then inc(in_b);

    if in_b > 1 then begin
      inc(count); c[count] := a[i];
    end;
  end;

  { ... и распечатываем С }
  ...
end.
Катя
Спасибо большое! А не мог бы ты мне ещё подсказать?
Мне нужно чтобы размерность и эл-ты массивов вводились пользователем с клавиатуры в самой программе а уже потом был сформирован массив С
volvo
Ну, тогда тебе надо или описывать массивы A, B очень большими, и использовать только какую-то (введенную пользователем) часть, или (что предпочтительно), выделять массивы динамически...

Первый вариант:
const
  n = 1000;
type
  arr = array[1 .. n] of integer;
var
  a, b, c: arr;
  size_A, size_B: integer;
...
begin
  write('size of A = '); readln(size_A);
  write('size of B = '); readln(size_B);

  { здесь вводим массивы A, B }

  count := 0;
  for i := 1 to size_A do begin
    in_b := 0;
    for j := 1 to size_B do
      if b[j] = a[i] then inc(in_b);

    if in_b > 1 then begin
      inc(count); c[count] := a[i];
    end;
  end;

  { ... и распечатываем С }
  ...
end.


Реализацию второго варианта смотри здесь:
Работа с динамическими массивами
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.