IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Задачка на множества, помогите пожалуйста
сообщение
Сообщение #1


Гость






В городе N, 100 кондитерских магазинов. Известно что в каждом из магазинов не более 20 видов сластей в ассортименте. Какие виды сластей есть во всех магазинах. Существует ли магазин торгующий уникальной продукцией. Перечислите 5 видов сластей которые есть в большинстве магазинов города N. (ассортимент кондитерских магазинов рассматривается как длинна перечисляемого типа)

я так понял тут нада записывать множества, точнее массив множеств, только толком ни че не получается.

вот что смог придумать:

program ex2;
type
asort=1..20;
asortim=set of asort;
var
MAg:array[1..100] of asortim;
i,j,ra,ra1:byte;
begin
for i:=1 to 100 do
begin
randomize;
ra:=round(random(20));
for j:=1 to ra do
begin
ra1:=round(random(20));
Include(Mag[i],ra1);
end;
end;


Помогите плиз, через 2 дня всю контрольную надо сдавать, а у меня одна эта задача висит( mega_chok.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Блин, ниодного програмиста нет на форуме ? nea.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Msblast @ 26.05.2007 10:35) *

Блин, ниодного програмиста нет на форуме ?

Только не надо ругаться, ладно? mad.gif Это форум, а не твои личные консультанты..

Вот, глянь, была похожая тема..
Множества


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость







type
asort=1..20;
asortim=set of asort;
var
MAg:array[1..100] of asortim;
i,j,ra,ra1:byte;

begin
for i:=1 to 100 do {для каждого из 100 магазинов}
begin
randomize;
ra:=round(random(20)); {генерируем КОЛ-ВО сластей}
for j:=1 to ra do
begin
ra1:=round(random(20)); {генерируем ВИДЫ сластей}
Include(Mag[i],ra1); {записываем}
end;
end;
for i:=1 to 100 do writeln(Mag[i]); {вот здесь пишет ошибку}
readln;
end.


написал маленький кусочек.....хотел посмотреть как он заполнит, так он отказывается выводить массив
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


for i:=1 to 100 do 
if i in Mag[i] then
writeln(i);
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






спасибо...

а как найти элементы присутсвующие во всех 100 множествах ???

через цикл типа:
for i:=1 to 100 do
m:=S[i]*m
неполучится...ибо он сравнивает только текущий с результатом предыдущего

а писать s[1]*s[2]*s[3]*s[4] и так далее помоему глупо....

как быть?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Цитата
через цикл типа:
<skipped>
неполучится...
Это смотря что в m положить в начале... Если засунуть туда все возможные значения для данного типа, то только так и надо делать...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






ну зададим в начале его как 1..20 , при первой проерке он заполнится тем что есть в первом множестве и в нем, т.е первым множеством полностью, а последущие будут опять же сравниваться с предыдущими
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Цитата
последущие будут опять же сравниваться с предыдущими
неверно... Последующие будут сравниваться с "произведением" всех предыдущих... Смотри:

s[1] = [1 .. 5];
s[2] = [3 .. 5];
s[3] = [1 .. 4, 6 .. 10];

Изначально m = [1 .. 20]
После первой итерации: m = m * s[1] => [1 .. 20] * [1, 2, 3, 4, 5] = [1, 2, 3, 4, 5]
после второй: m := m * s[2] => [1, 2, 3, 4, 5] * [3, 4, 5] = [3, 4, 5];
после третьей: m = m * s[3] => [3, 4, 5] * [1, 2, 3, 4, 6, 7, 8, 9, 10] = [3, 4]

А теперь посмотри, какие элементы на самом деле встречаются везде?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






все..вкурил, просто я немного не о том думал
спасибо за помощь
вот тока задача так поставлена что все конечные множества пустыми получаются..( ну да ладно
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 15:59
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name