Определить множество, содержащее наибольшее количество элементов, которые есть в других множествах - PascalABC.NET

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

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

Дано N множеств . Определить множество, какое содержит наибольшее количество элементов , которые есть в других множествах .
Начать, начал, а закончить не хватает сил, буду благодарен за помощь, приложил начало кода.

Решение задачи: «Определить множество, содержащее наибольшее количество элементов, которые есть в других множествах»

textual
Листинг программы
type mnj=set of byte;
var b:array[1..20]of mnj;
    n,m,i,j,k,p,x,mx,imx:byte;
begin
randomize;
repeat
write('Количество множеств от 3 до 20 n=');
readln(n);
until n in [3..20];
repeat
write('Маскимальная мощность множеств от 3 до 20 m=');
readln(m);
until m in [3..20];
writeln('Множества');
for i:=1 to n do
 begin
  b[i]:=[];
  for j:=1 to m do
   begin
    x:=random(100);
    b[i]:=b[i]+[x];
   end;
  write(i:2,')');
  for k:=1 to 100 do
  if k in b[i] then write(k:3);
  writeln;
 end;
mx:=0;
imx:=0;
for i:=1 to n do //перебираем все множества
 begin
  k:=0;//есть в других 0
  for j:=1 to 100 do
  if j in b[i] then //если число есть в данном множестве
   begin
    x:=1;
    p:=0;
    while(x<=n)and(p=0)do //ищем его в других
    if(x<>i)and(j in b[x]) then inc(p)//если есть
    else inc(x);
    if p=1 then inc(k);//считаем
   end;
  if k>mx then //если больше текушего максимума
   begin
    mx:=k; //это максимум
    imx:=i; //его номер
   end;
 end;
writeln('Наибольшее количество элементов , которые есть в других множествах');
writeln('содержит множество номер ',imx,' их количество=',mx)
end.

Объяснение кода листинга программы

  1. Объявление переменных:
    • mnj - тип данных, представляющий множество байтовых значений (set of byte)
    • b - массив из 20 элементов типа mnj
    • n, m, i, j, k, p, x, mx, imx - все типа byte
  2. Инициализация генератора случайных чисел
  3. Ввод количества множеств (n) и максимальной мощности множеств (m) с помощью функции readln
  4. Вывод списка множеств:
    • Создание пустых множеств b[i] для каждого из n множеств
    • Заполнение множеств случайными числами от 1 до 100
    • Вывод номера множества и его элементов
  5. Поиск наибольшего количества элементов, которые есть в других множествах:
    • Инициализация переменных mx = 0 и imx = 0
    • Перебор всех множеств
    • Для каждого множества:
      • Инициализация переменной k = 0, которая подсчитывает количество элементов в других множествах
      • Перебор всех чисел от 1 до 100
      • Если число есть в текущем множестве, то:
        • Увеличение переменной x на 1 и переключение в следующий цикл
        • Если переменная x меньше n и p = 0, то:
          • Если число j не равно i и j есть в b[x], то увеличение переменной p на 1
          • Увеличение переменной x на 1
        • Если p = 1, то увеличение переменной k на 1
      • Если k больше mx, то:
        • Установка mx = k
        • Установка imx = i
  6. Вывод наибольшего количества элементов, которые есть в других множествах, и номера соответствующего множества

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


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

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

15   голосов , оценка 3.733 из 5
Похожие ответы