Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.81/32: Рейтинг темы: голосов - 32, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 23.02.2018
Сообщений: 77

Задача на множества

23.04.2020, 23:08. Показов 6530. Ответов 28

Студворк — интернет-сервис помощи студентам
Бинарное отношение R на конечном множестве A: RA2 – задано списком упорядоченных пар вида (a,b), где a,b принадлежит A. Требования на множество – в нём не должно встречаться повторяющихся элементов, кроме того, оно должно быть упорядочено по возрастанию. Если введённое пользователем множество не соответствует этим требованиям, программа должна автоматически привести его к необходимому виду.
1. На вход подаётся множество A из n элементов и список упорядоченных пар, задающий отношение R (мощность множества, элементы и пары вводятся с клавиатуры).

Добавлено через 3 часа 20 минут
Начал писать прогу, запутался с идентификаторами. задал мощность множества, далее через цикл зададим n элементов (правильно мыслю? или где то напутал?)

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
program lab_1;
uses crt;
Type
    mnog = set of char;
var
   power, : byte;
   elem, R: mnog;
   A: set of 'a'..'z';
begin
     ClrScr;
{задаем мощность множества:}
     Write ('ведите можность множества А: '  );
     Readln (power);
     writeln ('Множество А содержит ' , power, ' элемента' );
     write ('Введите ' , power, ' элемента множества через пробел: ');
     R:=[];
{вводим элементы множества:}
        for i:= 1 to power do
        begin
             writeln ('Введите ',i,'-тый элемент множества');
             readln ([i]);
 
   
end.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.04.2020, 23:08
Ответы с готовыми решениями:

Задача на файлы. Сформировать два множества, первое из которых содержит все простые числа из данного множества, а второе — все остальные.
1.Имя входного файла zmn26.in Имя выходного файла zmn26.out Имеется множество, содержащее натуральные числа из некоторого диапазона....

задача на множества
1.Если в базовом типе n различных значений то сколько различных значений в построенном на его основе множественном типе?

задача на множества
какие из следующих описаний не верну и почему? type точки=set of real; байт=packed array of 0..1 данные=set of байт ...

28
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7818 / 4637 / 2837
Регистрация: 22.11.2013
Сообщений: 13,159
Записей в блоге: 1
03.06.2020, 21:36
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от energ1 Посмотреть сообщение
код для проверки будет таким. ваш не работает
Интересно. Давайте посмотрим на пример, когда мой не работает, а ваш работает.
0
0 / 0 / 0
Регистрация: 23.02.2018
Сообщений: 77
04.06.2020, 06:25  [ТС]
Цитата Сообщение от bormant Посмотреть сообщение
Давайте посмотрим на пример, когда мой не работает,
Пардоньте. Еще раз проверил, предварительно выведя на экран матрицу эту:
Pascal
1
Write(Cell[(m[i,j] and m[j,i])]:W)
, и понял что у меня не так работает. получается я проверял не наличие единиц вне диагонали а сравнивал с изначальной матрицей..... Вернулся к вашему варианту........он рабочий!! вчера с ним возился и почему все время выдавал отрицательный результат, поэтому начал что то свое думать.

Добавлено через 1 минуту
прокомментируйте остальное пожалуйста.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7818 / 4637 / 2837
Регистрация: 22.11.2013
Сообщений: 13,159
Записей в блоге: 1
05.06.2020, 14:11
Цитата Сообщение от energ1 Посмотреть сообщение
Вывод элементов сделал так:
Pascal
Writeln; for i:=1 to n do write(chr(i+64),','); Writeln;
Использовать "магические числа" в коде идея так себе:
Pascal
WriteLn; for i:=1 to n do Write(Chr(i+Ord('A')-1),','); WriteLn;
Если использовать диапазон [0..n-1] вместо [1..n], то будет чуть проще, без корректировки на 1:
Pascal
WriteLn; for i:=0 to n-1 do Write(Chr(i+Ord('A')),','); Writeln;
Цитата Сообщение от energ1 Посмотреть сообщение
вывести пары множества
зачем сравнивать m[i,j] c самим собой и проверять результат на истинность?
m[i,j] and m[i,j] = true всегда будет True.
Вероятно все же имелось в виду что-то вроде:
Pascal
1
2
3
4
5
6
7
8
9
{вывод пар множества}
procedure mWritePairs(const m: TMatrix; n: Integer);
var k: Integer;
begin
  k:=0;
  for i:=1 to n do for j:=1 to n do if m[i,j] then begin
    Inc(k); WriteLn(k,'-(',Chr(i+Ord('A')-1),' ',Chr(j+Ord('A')-1),')');
  end;
end;
Цитата Сообщение от energ1 Посмотреть сообщение
Все ли верно?
ToActive -- перемещает курсор в активную ячейку
WriteCell -- выводит ячейку (r,c) цветом clr, возвращает курсор в активную ячейку
WriteRow, WriteCol -- выводят строку r, колонку c соответственно цветом cl, используются для перерисовки при перемещении курсора
WriteAll -- выводит матрицу целиком, заголовок и все строки

Цитата Сообщение от energ1 Посмотреть сообщение
попытался поменять подписи в редакторе
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
procedure WriteRow(r: Integer; cl: Byte);
var j: Integer;
begin
  GotoXY(BaseX,BaseY+r); TextAttr:=cl; Write(Chr(r+Ord('A')-1):W); { !! }
  for j:=1 to ac-1 do Write(Cell[m[r,j]]:W);
  TextAttr:=Clr[True]; Write(Cell[m[r,ac]]:W); TextAttr:=cl;
  for j:=ac+1 to n do Write(Cell[m[r,j]]:W);
  ToActive;
end;
 
procedure WriteCol(c: Integer; cl: Byte);
var i, x: Integer;
begin
  x:=BaseX+c*W; GotoXY(x,BaseY); TextAttr:=cl; Write(Chr(c+Ord('A')-1):W);  { !! }
  for i:=1 to n do begin
    GotoXY(x,BaseY+i);
    if i<>ar then
      Write(Cell[m[i,c]]:W)
    else begin
      TextAttr:=Clr[True]; Write(Cell[m[i,c]]:W); TextAttr:=cl;
    end;
  end;
  ToActive;
end;
 
procedure WriteAll;
var i, j: Integer;
begin
  TextAttr:=Clr[False]; ClrScr; Write('':W);
  for j:=1 to n do begin TextAttr:=Clr[j=ac]; Write(Chr(j+Ord('A')-1):W); end;  { !! }
  for i:=1 to n do WriteRow(i,Clr[i=ar]);
end;
Цитата Сообщение от energ1 Посмотреть сообщение
хотел вставить инструкцию, но она тоже закрывала экран- думаю для этого требуется сместить область вывода матрицы и сделать область для вывода инструкции все верно?
Да.
1
0 / 0 / 0
Регистрация: 23.02.2018
Сообщений: 77
08.06.2020, 08:42  [ТС]
Вопрос еще про редактор матрицы. Когда выходишь из этой процедуры в окно выбора действия - весь экран окрашивается в цвет выделения при редактировании. Почему так происходит?

Добавлено через 2 часа 18 минут
И происходит это до тех пор пока не выберу команду ClrScr;
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7818 / 4637 / 2837
Регистрация: 22.11.2013
Сообщений: 13,159
Записей в блоге: 1
08.06.2020, 10:48
Весь экран окрашивается — позвали ClrScr, цвет — тот, что в данный момент в TextAttr, старший полубайт — цвет фона, младший — символа.
0
0 / 0 / 0
Регистрация: 23.02.2018
Сообщений: 77
21.06.2020, 16:15  [ТС]
делаю дополнительное задание матрице с текущего задания. первое с чем столкнулся:
первый раз когда спрашиваем:
Pascal
1
Write('Вершина ',(chr(i+Ord('A')-1)),' и ',(chr(j+Ord('A')-1)),' связана?: ' );
это действие повторяется дважды. пытался по всякому исправить ошибку и все одно и то же.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
begin
     FillChar(m,SizeOf(m),#0);
     repeat
           Write('Мощность множества  [2..',nMax,']: '); Read(n);
     until n in [2..nMax];
     Writeln('Определим связные вершины (1-да, 0-нет) : ');
        for i:=1 to n do
        for j:=i+1 to n do
            begin
            repeat
            Write('Вершина ',(chr(i+Ord('A')-1)),' и ',(chr(j+Ord('A')-1)),' связана?: ' );
                  Readln(t); until t in ['0','1'];
              if t = '1' then m[i,j]:=true
                 else m[i,j]:=false;
            if m[i,j]=true then m[j,i]:=true else m[j,i]:=false;
              end;
        writeln('************************');
end;
0
0 / 0 / 0
Регистрация: 23.02.2018
Сообщений: 77
21.06.2020, 16:28  [ТС]
В последующем мы должны проверить и вывести сколько вершин сколько у нас их связано. Допустим: такая матрица и смежные вершины:

Название: Снимок.PNG
Просмотров: 32

Размер: 2.3 Кб
здесь у нас 4 вершины A B C D из низ связны А B, A D соответственно B D тоже связаны через A
тогда получим 2 компонента :
1 A B D
2 C
если ни 1 вершина не связана с другой соответственно 4 компонента: 1A 2B 3C 4D
дайте толчок как сделать проверку такую
0
0 / 0 / 0
Регистрация: 23.02.2018
Сообщений: 77
24.06.2020, 12:12  [ТС]
Вот что вышло(работает):

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
{ вывод компонентов связности и вершин входящих в них}
procedure mWrite_com;
var top_n,top_l:integer;
 
procedure check_l(v,nom:byte);
 var i:integer;
 begin
    t[v]:=nom;
    for i:=1 to n do
        if(m[v,i]=true)and(t[i]=0) then check_l(i,nom);
 end;
 
function check_top:integer; {функция проверяющая - есть ли непомеченные вершины}
 var i,k:integer;
 begin
    k:=0;
    for i:=1 to n do
        if t[i]=0 then
    begin
        k:=i;
        break;
    end;
    check_top:=k;
 end;
begin
    fillchar(t,sizeof(t),0);
    top_n:=0; {кол-во компонентов связности}
    top_l:=1;
    writeln('Компоненты связности и вершины, входящие в них: ');
    repeat
        inc(top_n);
        check_l(top_l,top_n);
        write(top_n,'. ');
        for i:=1 to n do
        if t[i]=top_n then
        write(Chr(i+Ord('A')-1),' ');
        writeln;
        top_l:=check_top;
    until (top_l=0);
end;
Добавлено через 1 минуту
Цитата Сообщение от energ1 Посмотреть сообщение
Write('Вершина ',(chr(i+Ord('A')-1)),' и ',(chr(j+Ord('A')-1)),' связана?: ' );
Но вот в этом месте все никак не могу догнать. для первой точки (А В) сообщение вылазит дважды. почему хз

Добавлено через 2 минуты
bormant Будьте добры
0
0 / 0 / 0
Регистрация: 23.02.2018
Сообщений: 77
25.06.2020, 08:57  [ТС]
Цитата Сообщение от energ1 Посмотреть сообщение
Но вот в этом месте все никак не могу догнать. для первой точки (А В) сообщение вылазит дважды. почему хз
Разобрался
Pascal
1
2
3
4
5
begin
Write('Вершина ',(chr(i+Ord('A')-1)),' и ',(chr(j+Ord('A')-1)),' связана?: ' );
repeat
Read(t); 
until t in ['0','1'];
Так надо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.06.2020, 08:57

задача на множества
Даны три множества Х1, Х2, Х3, содержащие целые числа из диапазона 0..10. Известно, что мощность каждого из этих множеств равна...

Задача на множества
помогиге решить плз задачу через множества: дана непустая последовательность символов, элеметами которого являются буквы от а до f и от x...

Задача на множества
Разработать программу, присваивающую некоторой переменной значение &quot; истина&quot;, если букв во веденном тексте больше, чем гласных букв и...

Задача на множества
Дана строка. Вывести по одному разу все знаки препинания, входящие в строку

Задача на множества
Даны следующие описания переменных: type M=set of 0..99; Описать функцию card(A) посчитывающую количество элементов в множестве А типа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru