Построить массив по правилу - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

На входе даются два целочисленных массива x и y с размером n. Рассматривая массивы как конечные множества нужно построить третий массив z с размером не более 2n, где сам массив z это разность множеств x и y (y=x\y)

Решение задачи: «Построить массив по правилу»

textual
Листинг программы
const m = 16;
 
type set_arr = array [1..m] of integer;
 
procedure read_set(s:string; var x: set_arr; k: integer);
var i, j: integer;
    b: boolean;
begin
  writeln('Введите элементы множества ', s);
  for i := 1 to k do
    repeat
      write(i:2, ': ');
      readln(x[i]);
      b := true;
      for j := 1 to i - 1 do
        if x[i] = x[j]
          then begin
            b := false;
            writeln('Это значение уже есть в множестве, повторите ввод.');
            break
          end;
    until b
end;
 
procedure prn_set(s:string; var x: set_arr; k: integer);
var i: integer;
begin
  write('Элементы множества ', s, ': [');
  if k > 1 then write(x[1]);
  for i := 2 to k do write(', ', x[i]);
  writeln(']')
end;
 
var x, y, z: set_arr;
    i, j, n, q: integer;
    f: boolean;
 
begin
  repeat
    write('n в диапазоне 1..', m, ';  n = ');
    readln(n)
  until (n >= 1) and (n <= m);
  read_set('X', x, n);
  read_set('Y', y, n);
  q := 0;
  for i := 1 to n do
    begin
      f := true;
      for j := 1 to n do
        if x[i] = y[j]
          then begin
            f := false;
            break
          end;
      if f
        then begin
          inc(q);
          z[q] := x[i]
        end
    end;
  prn_set('X', x, n);
  prn_set('Y', y, n);
  prn_set('Z=X\Y', z, q);
  readln
end.

Объяснение кода листинга программы

  1. В коде определена константа m, которая равна 16.
  2. Задано описание типа массива set_arr, который является одномерным массивом, содержащим целые числа, размером от 1 до m.
  3. Определена процедура read_set, которая считывает элементы множества s из стандартного ввода и сохраняет их в массиве x. При этом проверяется уникальность каждого введенного элемента.
  4. Определена процедура prn_set, которая выводит элементы множества s на экран.
  5. В основной части кода определены три массива x, y и z, а также четыре переменные i, j, n и q. Переменная f используется в цикле и инициализируется значением true.
  6. В цикле пользователю предлагается ввести число n в диапазоне от 1 до m.
  7. После корректного ввода числа n вызывается функция read_set, чтобы считать элементы двух множеств x и y по n элементов каждое.
  8. Переменная q инициализируется значением 0 и используется для подсчета количества общих элементов в двух множествах.
  9. В цикле по всем элементам первого множества x проверяется, есть ли такой же элемент во втором множестве y. Если такой элемент найден, то переменная f становится false и цикл прерывается. Если после цикла переменная f осталась true, то это значит, что текущий элемент множества x является общим для обоих множеств и его значение сохраняется в массиве z с индексом q.
  10. После заполнения массива z вызывается функция prn_set, чтобы вывести на экран элементы всех трех множеств.
  11. В конце программы предлагается ввести символ для завершения работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.2 из 5
Похожие ответы