Пересечения и объединения массивов - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Есть три массива A={1,3,4,5,10}, B={3,5,7,8,9}, C={3,5,6,9,10} Надо вычислить и вывести результат в виде 4 массива

Решение задачи: «Пересечения и объединения массивов»

textual
Листинг программы
  1. const
  2.     UNIV: Set Of Byte = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
  3. type
  4.     TSet = Set Of Byte;
  5.     TLine = Array[1..10] Of Byte;
  6.     TArray = record
  7.         a: TLine;
  8.         n: Byte;
  9.     end;
  10. function SetToArray(const s: TSet): TArray;
  11. var
  12.     i: Byte;
  13.     Result: TArray;
  14. begin
  15.     with Result do
  16.     begin
  17.         n := 0;
  18.         for i := 1 to 10 do
  19.             if (i in s)
  20.             then
  21.             begin
  22.                 Inc(n);
  23.                 a[n] := i;
  24.             end;
  25.     end;
  26.     SetToArray := Result;
  27. end;
  28. function ArrayToSet(const a: TArray): TSet;
  29. var
  30.     i: Byte;
  31.     Result: TSet;
  32. begin
  33.     Result := [];
  34.     with a do
  35.         if (n > 0)
  36.         then
  37.             for i := 1 to n do
  38.                 Include(Result, a[i]);
  39.     ArrayToSet := Result;
  40. end;
  41. procedure PrintArray(const a: TArray; const c: Char);
  42. var
  43.     i: Byte;
  44. begin
  45.     WriteLn; Write('Array ', c, ':');
  46.     with a do
  47.         if (n > 0)
  48.         then
  49.             for i := 1 to n do
  50.                 Write(' ', a[i])
  51.         else
  52.             Write(' empty.');
  53.     WriteLn;
  54. end;
  55.  
  56. var
  57.     a, b, c, d: TArray;
  58. begin
  59.     a := SetToArray([1, 3, 4, 5, 10]); PrintArray(a, 'A');
  60.     b := SetToArray([3, 5, 7, 8, 9]); PrintArray(b, 'B');
  61.     c := SetToArray([3, 5, 6, 9, 10]); PrintArray(c, 'C');
  62.     d := SetToArray((UNIV - ArrayToSet(a))*(ArrayToSet(b) + ArrayToSet(c)));
  63.     PrintArray(d, 'D');
  64. end.

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут