Построить массив по правилу - 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.
Объяснение кода листинга программы
- В коде определена константа
m
, которая равна 16. - Задано описание типа массива
set_arr
, который является одномерным массивом, содержащим целые числа, размером от 1 доm
. - Определена процедура
read_set
, которая считывает элементы множестваs
из стандартного ввода и сохраняет их в массивеx
. При этом проверяется уникальность каждого введенного элемента. - Определена процедура
prn_set
, которая выводит элементы множестваs
на экран. - В основной части кода определены три массива
x
,y
иz
, а также четыре переменныеi
,j
,n
иq
. Переменнаяf
используется в цикле и инициализируется значениемtrue
. - В цикле пользователю предлагается ввести число
n
в диапазоне от 1 доm
. - После корректного ввода числа
n
вызывается функцияread_set
, чтобы считать элементы двух множествx
иy
поn
элементов каждое. - Переменная
q
инициализируется значением 0 и используется для подсчета количества общих элементов в двух множествах. - В цикле по всем элементам первого множества
x
проверяется, есть ли такой же элемент во втором множествеy
. Если такой элемент найден, то переменнаяf
становитсяfalse
и цикл прерывается. Если после цикла переменнаяf
осталасьtrue
, то это значит, что текущий элемент множестваx
является общим для обоих множеств и его значение сохраняется в массивеz
с индексомq
. - После заполнения массива
z
вызывается функцияprn_set
, чтобы вывести на экран элементы всех трех множеств. - В конце программы предлагается ввести символ для завершения работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д