Операции с (над) множествами символьного типа, получение множества по заданному условию - PascalABC.NET

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

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

Вложение 667205 Задано пять множеств А, В, С, D, E символьного типа. Получить множество Х, которая вычисляется по "формуле 1", если выполняется указанное "Условие", или по "формуле 2", если условие не выполняется. Варианты "условия", "формула 1", "формула 2" и тип множеств указанные в таблице 1. В таблице используются следующие сокращения: обозначения: АВ - А есть подмножество В ("in", "<=" - содержится в) АВ - А не является подмножеством В АВ - А включает в себя В ("> =" - содержит) А  В - А не содержит в себе В А = В - множества А и В равны АВ - множества А и В не равны АВ - объединение множеств А и В АВ - пересечение множеств А и В А \ В - разность множеств А и В А--В - симметрическая разность А и В  - конъюнкция (логическая операция "и") V- дизъюнкция (логическая операция "или") 1). Умова ((АВ)С) V (D=E) 2). Формула 1 A\BCDE 3). Формула 2 ABC--D--E 4). Тип символьний Запись в Pascal 1). ((А+В)<= С) or (D=E) 2). A-B+C+D+E 3). A+B+((C+D+E)-(C*D*E)) 4). char Эту задачу я сделал, но как тип множества численный или отрезок, а нужно как символьный - "char". Есть идеи, как это реализовать? Чтоб выводились всякие символы в множествах РАНДОМНО (буквы например или по таблице символов 866 (ASCII, OEM, DOS)) или брались из файла. Ну и так далее, выполнялись условие (формулы). Помогите пожалуйста поправить код.
Листинг программы
  1. type symbol = set of byte;//устанавливаем тип множества
  2. //Type symbol= >set of char;
  3. var
  4. A, B, C, D, E, X1, X2: symbol ;
  5. begin
  6. writeln('Условие: (A + B)<=C or (D=E) '); //Условие
  7. writeln();
  8. randomize; //заполняем каждое множество случайными значениями
  9. A:=[random(10)..random(100)+10];
  10. writeln('Множество А: ', A); //выводим каждое множество
  11. writeln();
  12. B:=[random(15)..random(35)+15];
  13. writeln('Множество B: ', B);
  14. writeln();
  15. C:=[random(22)..random(25)+22];
  16. writeln('Множество C: ', C);
  17. writeln();
  18. D:=[random(35)..random(40)+35];
  19. writeln('Множество D: ', D);
  20. writeln();
  21. E:=[random(17)..random(22)+17];
  22. writeln('Множество E: ', E);
  23. writeln();
  24. //A := [1..20];
  25. //B := [0..15];
  26. //C := [0..10];
  27. //D := [0..15];
  28. //E := [3..21];
  29. if ((A + B) <= C) or (D = E) then //Проверяем соответствует ли решение значению true, если да, то выполняется следующее условие
  30. begin
  31. X1 := A - B + C + D + E;
  32. writeln('Условие истинно, для вычисления используется формула X1: A-B+C+D+E ');
  33. //writeln ();
  34. writeln('Множество X1: ', X1);
  35. end
  36. else //если нет - выполняется следующее условие
  37. begin
  38. X2 := A + B + ((C + D + E) - (C * D * E));
  39. writeln('Условие ложно, для вычисления используется формула X2: A+B+((C+D+E)-(C*D*E))');
  40. //writeln();
  41. writeln('Множество X2: ', X2);
  42. end;
  43. end.

Решение задачи: «Операции с (над) множествами символьного типа, получение множества по заданному условию»

textual
Листинг программы
  1. begin
  2.   var A, B, C : Set of Char;
  3.   Randomize;
  4.   // Случайными символами
  5.   A := []; for var i := 1 to Random(10, 20) do A += [Chr(Random(Ord('A'), Ord('Z')))];
  6.   B := []; for var i := 1 to Random(10, 20) do B += [Chr(Random(Ord('A'), Ord('Z')))];
  7.   // Диапазоном символов
  8.   C := [ Chr(Random(Ord('A'), Ord('E'))) .. Chr(Random(Ord('G'), Ord('L'))) ];
  9.  
  10.   WriteLn('A = ', A);
  11.   WriteLn('B = ', B);
  12.   WriteLn('C = ', C);
  13.  
  14.   WriteLn('A U B = ', A + B);
  15.   WriteLn('A n B = ', A * B);
  16. end.

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


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

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

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

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

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

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