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

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

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

Дано N множеств . Определить множество, какое содержит наибольшее количество элементов , которые есть в других множествах .
Листинг программы
  1. program lab3;
  2. type mnj=set of byte;
  3. var
  4. x:byte;
  5. i,n:integer;
  6. a:mnj;
  7. b:array[1..100]of mnj;
  8. Begin
  9. Write('n ');read(n);{Задаем количество множеств}
  10. for i:=1 to n do begin{Заполняем множества до нажатия 1}
  11. write('x',i,' ');
  12. b[i]:=[];
  13. repeat
  14. repeat
  15. readln(x);
  16. until x in [0..255];
  17. b[i]:=b[i]+[x];
  18. until x=1;
  19. end;
  20. for i:=1 to n do{Выводим все множества}
  21. writeln('Множество ',i,' ',b[i]);
  22. a:=b[1];
  23. end.
Начать, начал, а закончить не хватает сил, буду благодарен за помощь, приложил начало кода.

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

textual
Листинг программы
  1. type mnj=set of byte;
  2. var b:array[1..20]of mnj;
  3.     n,m,i,j,k,p,x,mx,imx:byte;
  4. begin
  5. randomize;
  6. repeat
  7. write('Количество множеств от 3 до 20 n=');
  8. readln(n);
  9. until n in [3..20];
  10. repeat
  11. write('Маскимальная мощность множеств от 3 до 20 m=');
  12. readln(m);
  13. until m in [3..20];
  14. writeln('Множества');
  15. for i:=1 to n do
  16.  begin
  17.   b[i]:=[];
  18.   for j:=1 to m do
  19.    begin
  20.     x:=random(100);
  21.     b[i]:=b[i]+[x];
  22.    end;
  23.   write(i:2,')');
  24.   for k:=1 to 100 do
  25.   if k in b[i] then write(k:3);
  26.   writeln;
  27.  end;
  28. mx:=0;
  29. imx:=0;
  30. for i:=1 to n do //перебираем все множества
  31.  begin
  32.   k:=0;//есть в других 0
  33.   for j:=1 to 100 do
  34.   if j in b[i] then //если число есть в данном множестве
  35.    begin
  36.     x:=1;
  37.     p:=0;
  38.     while(x<=n)and(p=0)do //ищем его в других
  39.     if(x<>i)and(j in b[x]) then inc(p)//если есть
  40.     else inc(x);
  41.     if p=1 then inc(k);//считаем
  42.    end;
  43.   if k>mx then //если больше текушего максимума
  44.    begin
  45.     mx:=k; //это максимум
  46.     imx:=i; //его номер
  47.    end;
  48.  end;
  49. writeln('Наибольшее количество элементов , которые есть в других множествах');
  50. writeln('содержит множество номер ',imx,' их количество=',mx)
  51. 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

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

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

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