Пересечения и объединения массивов - 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.

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


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

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

13   голосов , оценка 3.846 из 5