Построить массив по правилу - 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
, чтобы вывести на экран элементы всех трех множеств. - В конце программы предлагается ввести символ для завершения работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д