ПОМОГИТЕ
в городе н имеется 100кондит магазинов.Известно,что в каждом из магазинов не более 10 видов сластей.Какие виды сластей есть в о всех магазинах. Существует ли магазин торгующий уникальной продукцией? Перечислите 5 видов сластей к-ые есть в большинстве магазинов города.(ассортимент магазина рассматривать как данные перечисляемого типа).
[COLOR="Red"]
Получаете бан на 10 дней за многократные нарушения Правил раздела Студентам. Если не ознакомитесь Правилами и не будете их впредь соблюдать бан будет вечный.[/COLOR]
в городе н имеется 100кондит магазинов.Известно,что в каждом из магазинов не более 10 видов сластей.Какие виды сластей есть в о всех магазинах. Существует ли магазин торгующий уникальной продукцией? Перечислите 5 видов сластей к-ые есть в большинстве магазинов города.(ассортимент магазина рассматривать как данные перечисляемого типа).
немного непонятно, сколько вообще есть различных видов сластей...
ну да ладно...
я задачу понял так... есть 10 видов сладостей... конфеты, халва,...
на С это запишется так
далее...
у каждого магазина есть набор сладостей представленный элементами из Sweets(если бы я делал задачу на С++, то представил бы это как vector<Sweets>)
далее нужно построить для каждого из 100 кондитерских магазинов массив с ассортиментом(рандомно например)
ну и потом провести нужные сравнения:
для сравнения элементов vector можно использовать ф-ю find из algorithm (C++)
думаю на любом другом языке сложностей по реализации возникнуть не должно...
п.с. единственный непонятный момент - 10 видов сластей, т.к. в постановке задачи толком не сказано общее кол-во различных видов сладостей во всех магазинах города, а лишь ограничено разнообразие для одного магазина.
п.с. немного не так(не используется enum), но примерчик кода, который сравнивает ассортименты в 100 кондитерских...
#include <conio.h>
#include <cstdlib>
#include <ctime>
using namespace std;
void bin_out(long int a, ostream& out = cout)
{[INDENT] for(int i = 0;i < 10; ++i)
{
[INDENT]int t = a%2;
a /= 2;
out << t;[/INDENT] }[/INDENT]}
void main()
{
[INDENT]srand(time(NULL));
long int shops[100];
//формируем ассортимент
for(int j = 0;j < 100; ++j)[INDENT]for(int i = 0;i < 10; ++i)
{
[INDENT]int t = rand()%2;
shops[j] = t*(2 << i);[/INDENT] }[/INDENT]
//маска для сравнения ассортиментов
long int assort = 1023;
cout << "bit mask: ";
bin_out(assort);
cout << endl;
//сравниваем ассортименты
for(int i = 0;i < 100; ++i)[INDENT]assort &= shops;[/INDENT]
//выводим результат
cout << "assort: ";
bin_out(assort);
cout << endl;
_getch();[/INDENT]}
фишка в том, что ассортимент каждого магазина есть 10 разрядное число, в каждом разряде которого хранится 0(нет такого товара) или 1(есть такой товар)
Но правдо это мне нужно в паскале.
Type Sweets = (Coockies, Cakes, Choco, ... );
дальше каждый магазин -- это множество видов сладостей кот. он продаёт, магазинов у нас N=100 (лучше объявить константу и для отладки использовать небольшое число), так что объявляем массив:
Var shops: array [1 .. N] of set of Sweets;
Теперь задачи решаются так:
1. Сладости, кот. во всех маг-х: просто пересечение всех shops-ов (пересечение множеств в паскале -- оператор *)
2. Уникальный магазин: найти такое shops, что пересечение shops с остальными shops[j] (j <> i) -- пустое мн-во. т.е. shops * shops[j] = []
-- тут надо сделать двойной цикл по магазинам
3. 5 видов сластей к-ые есть в большинстве магазинов: тут надо подсчитать в скольких магазинах встречается каждый вид сладости (т.е. завести массив счётчиков для каждой сладости, это выглядит так:
Var popularity: array [Sweets] of integer; ) затем выбрать 5 максимальных, можно было бы сделать сортировку но это слишком сложно, поэтому предлагаю такой подход:
повторить 5 раз:
1) пройтись по массиву popularity и выбрать сладость с макс. значение счётчика
(цикл организуется так: for s := Cookies to Caramel do ...; {пердположим что Caramel -- это последний вид сладости в перечислении Sweets})
2) запомнить найденную сладость (либо в отдельном массиве либо в отдельном ножестве)
3) в массиве popularity сброчить счётчик для найденной сладости так чтобы в следующей итерации была найдена уже другая сладость (напр. так: popularity