Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

ПОМОГИТЕ

52K
04 июня 2010 года
Wipysknica
17 / / 15.05.2010
Объясните,что в этой задаче нужно сделать?
в городе н имеется 100кондит магазинов.Известно,что в каждом из магазинов не более 10 видов сластей.Какие виды сластей есть в о всех магазинах. Существует ли магазин торгующий уникальной продукцией? Перечислите 5 видов сластей к-ые есть в большинстве магазинов города.(ассортимент магазина рассматривать как данные перечисляемого типа).
[COLOR="Red"]
Получаете бан на 10 дней за многократные нарушения Правил раздела Студентам. Если не ознакомитесь Правилами и не будете их впредь соблюдать бан будет вечный.[/COLOR]
1.8K
05 июня 2010 года
LM(AL/M)
332 / / 20.12.2005
Язык какой? Если паскаль, то есть красивое решение. Иначе посложнее будет
2.1K
05 июня 2010 года
Norgat
452 / / 12.08.2009
Цитата: Wipysknica
Объясните,что в этой задаче нужно сделать?
в городе н имеется 100кондит магазинов.Известно,что в каждом из магазинов не более 10 видов сластей.Какие виды сластей есть в о всех магазинах. Существует ли магазин торгующий уникальной продукцией? Перечислите 5 видов сластей к-ые есть в большинстве магазинов города.(ассортимент магазина рассматривать как данные перечисляемого типа).



немного непонятно, сколько вообще есть различных видов сластей...
ну да ладно...

я задачу понял так... есть 10 видов сладостей... конфеты, халва,...
на С это запишется так

 
Код:
enum Sweets{sweet1,sweet2,sweet3,sweet4,sweet5,sweet6,sweet7,sweet8,sweet9, sweet10};


далее...

у каждого магазина есть набор сладостей представленный элементами из Sweets(если бы я делал задачу на С++, то представил бы это как vector<Sweets>)

далее нужно построить для каждого из 100 кондитерских магазинов массив с ассортиментом(рандомно например)

ну и потом провести нужные сравнения:
Цитата:
Какие виды сластей есть в о всех магазинах.


Цитата:
Существует ли магазин торгующий уникальной продукцией?


Цитата:
Перечислите 5 видов сластей к-ые есть в большинстве магазинов города.



для сравнения элементов vector можно использовать ф-ю find из algorithm (C++)

думаю на любом другом языке сложностей по реализации возникнуть не должно...

п.с. единственный непонятный момент - 10 видов сластей, т.к. в постановке задачи толком не сказано общее кол-во различных видов сладостей во всех магазинах города, а лишь ограничено разнообразие для одного магазина.

п.с. немного не так(не используется enum), но примерчик кода, который сравнивает ассортименты в 100 кондитерских...

Цитата:
#include <iostream>
#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(есть такой товар)

52K
05 июня 2010 года
Wipysknica
17 / / 15.05.2010
Norgat,спасибо за алгоритм и за пояснение к программе!!!
Но правдо это мне нужно в паскале.
1.8K
06 июня 2010 года
LM(AL/M)
332 / / 20.12.2005
в паскале нужно использовать тип множество: сначала описываем тип-перечисление всех видов сладостей:
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 := -1)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог