Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 30.12.2017
Сообщений: 25

Определить тип множество массивами

03.01.2018, 13:15. Показов 2195. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Моделирование типов. Определить тип множество массивами [1..nMax]->Boolean.
также нужно определить процедуры:конъюнкуии, дизъюнкции и разности
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.01.2018, 13:15
Ответы с готовыми решениями:

Используя тип множество определить количество согласных в каждой строчке файла
Есть текстовый файл. Используя тип множество опередлить количество согласных в каждой строчке. Результат вывести в виде (Номер строчки -...

тип множество
Определить в строке количество целых чисел, у которых старшая цифра чётная.

тип данных Множество
Здравствуйте помогите пожалуйста решить задачу. Вот условие: Даны два числа N и M (N<=M). Напечатать в порядку возрастания числа из...

6
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
03.01.2018, 14:11
Цитата Сообщение от Malina24 Посмотреть сообщение
Определить тип множество массивами [1..nMax]->Boolean.
Как-то непонятно, если тип boolean, то массив-множество может содержать не более двух элементов [true,false].
0
 Аватар для Hitoku
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
03.01.2018, 14:13
Puporev, а мне кажется, что элементов может быть много, но у каждого по 2 позиционных состояния
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
03.01.2018, 14:15
Тогда это будет множество записей, при чем тип первого поля не известен, тип второго поля boolean.
0
0 / 0 / 0
Регистрация: 30.12.2017
Сообщений: 25
04.01.2018, 14:44  [ТС]
А как просто определить тип множество массивам?

Добавлено через 2 минуты
А если просто определить тип множества массивами?
0
Модератор
10445 / 5737 / 3406
Регистрация: 17.08.2012
Сообщений: 17,453
05.01.2018, 03:49
Множество с помощью массива смоделировать просто. Я бы сказал, в самом вопросе содержится ответ.

1. Определяем базовый перечисляемый тип для множества.
2. Создаём массив типа boolean, начальный и конечный индексы которого совпадают с минимальным и максимальным значением выбранного базового перечисляемого типа. Считаем, что если элемент массива равен true, то значение, равное индексу элемента, включено во множество, и false, если значение, равное индексу элемента, не включено во множество. Описанный массив очень хорошо моделирует ограниченное множество.
3. Создаём нужные подпрограммы для работы с множеством.

Недостаток такого самодельного множества: размер его равен мощности базового типа, умноженному на размер переменной типа boolean. В принципе, размер множества можно уменьшить до размера базового типа, поделённого на 8, если под наличие элемента множества отводить только один бит. В некоторых диалектах паскаля для этого есть встроенный инструмент, обычно включается директивой компилятора
Pascal
{$BITPACKING ON}
Пример реализации множеств на массивах:
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
const
  nMax = 500; //фактически, мощность множества
 
type MyRange = 1..nMax; //диапазон для множества
     MySet = array[MyRange] of boolean; //тип для множества
 
//очистка множества
procedure MyErase(var a: MySet);
var i: MyRange;
begin
  for i := low(MyRange) to high(MyRange) do a[i] := false
end;
 
//включение элемента во множество
procedure MyInclude(var a: MySet; x: MyRange);
begin
 a[x] := true;
end;
 
//исключение элемента из множества (это на всякий случай, можно убрать)
procedure MyExclude(var a: MySet; x: MyRange);
begin
  a[x] := false;
end;
 
//печать множества
procedure MyPrint(s: string; const a: MySet);
var i: MyRange;
begin
  writeln(s);
  for i := low(MyRange) to high(MyRange) do
    if a[i] then write(i :4);
  writeln
end;
 
//ввод множества
procedure MyRead(s: string; var a: MySet);
var n, i, x: integer;
begin
  writeln(s);
  repeat
    write('Количество элементов множества (не более ', high(MyRange) - low(MyRange) + 1, ')? ');
    readln(n)
  until (n >= 0) and (n <= high(MyRange) - low(MyRange) + 1);
  if n > 0 then writeln('Введите элементы множества (диапазон значений [', low(MyRange), '..', high(MyRange), ']):');
  for i := 1 to n do
    begin
      repeat
        write('Элемент', i, ' = ');
        readln(x);
        if (x < low(MyRange)) or (x > high(MyRange))
          then writeln('Элемент вне диапазона значений, повторите ввод')
          else if a[x]
            then writeln('Такой элемент уже есть во множестве, повторите ввод')
      until (x >= low(MyRange)) and (x <= high(MyRange)) and not a[x];
      MyInclude(a, MyRange(x))
    end
end;
 
//конъюнкция (умножение, пересечение) множеств
procedure MyConjunction(var a: MySet; const b, c: MySet);
var i: MyRange;
begin
  for i := low(MyRange) to high(MyRange) do a[i] := b[i] and c[i]
end;
 
//дизъюнкция (сложение, объединение) множеств
procedure MyDisjunction(var a: MySet; const b, c: MySet);
var i: MyRange;
begin
  for i := low(MyRange) to high(MyRange) do a[i] := b[i] or c[i]
end;
 
//разность множеств (не симметрическая)
procedure MyDifference(var a: MySet; const b, c: MySet);
var i: MyRange;
begin
  for i := low(MyRange) to high(MyRange) do a[i] := b[i] and not c[i]
end;
 
var a, b, c: MySet;
begin
  MyErase(a);
  MyErase(b);
  MyErase(c);
  MyRead('Ввод первого множества', b);
  MyRead('Ввод второго множества', c);
  writeln;
  MyPrint('Первое множество:', b);
  MyPrint('Второе множество:', c);
  MyConjunction(a, b, c);
  MyPrint('Конъюнкция множеств:', a);
  MyDisjunction(a, b, c);
  MyPrint('Дизъюнкция множеств:', a);
  MyDifference(a, b, c);
  MyPrint('Разность множеств:', a);
  readln
end.

Не по теме:

А вы
ноктюрн сыграть
могли бы
на флейте водосточных труб?

(C) Маяковский В. В.

На флейте водосточных труб?
Элементарно! Бум-бум-бум! Бум-бум-бум!

(С) Лукомников Г. Г.

0
0 / 0 / 0
Регистрация: 30.12.2017
Сообщений: 25
05.01.2018, 17:54  [ТС]
Cyborg Drone, Спасибо огромное)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.01.2018, 17:54
Помогаю со студенческими работами здесь

Строковый тип, множество. Исключить из строки все повторяющиеся символы.
Буду краток: помогите кому не лень. :) Исключить из строки все повторяющиеся символы. Заранее признателен.

Тип данных - множество. Найти гласную, чаще всего встречающуюся в слове Х
Составьте программу нахождения гласной, чаще всего встречающейся в слове Х. помогиииииииитееееееее, уважаемые! :)

Используя тип множество, выяснить каких букв в тексте больше, гласных или согласных
Дано текст из простых латинских букв и цифр, за которыми следует точка. Используя тип множество, выяснить каких букв больше,...

Тип данных - множество. Составьте программу вычисления суммы мест, на которых в слове Х стоят глухие согласные
Составьте программу вычисления суммы мест, на которых в слове Х стоят глухие согласные буквы.

Определить множество
Вычислить выражение * + – * A) B) C) D) E)


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru