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

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

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

> Задачка на множества, помогите пожалуйста
Msblast
сообщение 25.05.2007 14:08
Сообщение #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
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 9)
Msblast
сообщение 26.05.2007 9:35
Сообщение #2


Гость






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


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

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

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


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

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

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

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


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Msblast
сообщение 26.05.2007 15:38
Сообщение #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.


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


Гуру
*****

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

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


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


Гость






спасибо...

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

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

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

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


Гость






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


Гость






ну зададим в начале его как 1..20 , при первой проерке он заполнится тем что есть в первом множестве и в нем, т.е первым множеством полностью, а последущие будут опять же сравниваться с предыдущими
 К началу страницы 
+ Ответить 
volvo
сообщение 26.05.2007 19:21
Сообщение #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]

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


Гость






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

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

 



- Текстовая версия 26.07.2025 16:44
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"