Пересечения и объединения массивов - Pascal ABC
Формулировка задачи:
Есть три массива A={1,3,4,5,10}, B={3,5,7,8,9}, C={3,5,6,9,10}
Надо вычислить и вывести результат в виде 4 массива
Решение задачи: «Пересечения и объединения массивов»
textual
Листинг программы
- const
- UNIV: Set Of Byte = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
- type
- TSet = Set Of Byte;
- TLine = Array[1..10] Of Byte;
- TArray = record
- a: TLine;
- n: Byte;
- end;
- function SetToArray(const s: TSet): TArray;
- var
- i: Byte;
- Result: TArray;
- begin
- with Result do
- begin
- n := 0;
- for i := 1 to 10 do
- if (i in s)
- then
- begin
- Inc(n);
- a[n] := i;
- end;
- end;
- SetToArray := Result;
- end;
- function ArrayToSet(const a: TArray): TSet;
- var
- i: Byte;
- Result: TSet;
- begin
- Result := [];
- with a do
- if (n > 0)
- then
- for i := 1 to n do
- Include(Result, a[i]);
- ArrayToSet := Result;
- end;
- procedure PrintArray(const a: TArray; const c: Char);
- var
- i: Byte;
- begin
- WriteLn; Write('Array ', c, ':');
- with a do
- if (n > 0)
- then
- for i := 1 to n do
- Write(' ', a[i])
- else
- Write(' empty.');
- WriteLn;
- end;
- var
- a, b, c, d: TArray;
- begin
- a := SetToArray([1, 3, 4, 5, 10]); PrintArray(a, 'A');
- b := SetToArray([3, 5, 7, 8, 9]); PrintArray(b, 'B');
- c := SetToArray([3, 5, 6, 9, 10]); PrintArray(c, 'C');
- d := SetToArray((UNIV - ArrayToSet(a))*(ArrayToSet(b) + ArrayToSet(c)));
- PrintArray(d, 'D');
- end.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д