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