-
Дмитрий (30.08.12 00:12) [0]Добрый вечер!
Дело следующее. Хочу написать программу, которая могла бы помочь новичкам-аквариумистам определять совместимость рыб. Так вот, не могли вы мне оказать помощь как лучше это все соорудить -
Таблица Рыбы (ИД, Наименование)
Таблица Совместимость (ИД, ИДРыбы1, ИДРыбы2) -
Дмитрий (30.08.12 00:26) [2]а поподробней можно?
-
> [2] Дмитрий (30.08.12 00:26)
> а поподробней можно?
А что непонятно? Выбрали рыбу из первой таблицы, во второй с какими уживётся. Выбрали из результатов ещё одну рыбу, к ней снова смотрим совместимость с учётом ранее выбранных. -
Германн © (30.08.12 01:20) [4]
> Дмитрий (30.08.12 00:26) [2]
> а поподробней можно?
Дайте код?
> Выбрали из результатов ещё одну рыбу, к ней снова смотрим
> совместимость с учётом ранее выбранных.
Это как раз самое сложное :) -
пираньи совместимы со всеми, а вот все остальные не совместимы с пираньями... деваются куда то.
-
Дмитрий (30.08.12 01:26) [6]Да нет еще кода пока, только начинаю, вот и обратился к Вам за помощью
-
Германн © (30.08.12 02:22) [7]
> sniknik © (30.08.12 01:22) [5]
>
> пираньи совместимы со всеми
Вот первая моя мысль была именно такая. :)
> Дмитрий (30.08.12 01:26) [6]
>
> Да нет еще кода пока, только начинаю, вот и обратился к
> Вам за помощью
>
Кода не дадим. Не надейся. :) -
Германн © (30.08.12 02:28) [8]Кстати.
Вот тут подумалось. Есть ли общее решение задачи о Волке, козле и капусте?
:) -
Дмитрий С © (30.08.12 13:28) [9]
> Дмитрий (30.08.12 01:26) [6]
>
> Да нет еще кода пока, только начинаю, вот и обратился к
> Вам за помощью
Это задача школьного уровня. Вряд ли вам тут помогут. -
Павел Калугин © (14.09.12 12:45) [10]
> Дмитрий (30.08.12 00:12)
> Добрый вечер!
>
> Дело следующее. Хочу написать программу, которая могла бы
> помочь новичкам-аквариумистам определять совместимость рыб.
> Так вот, не могли вы мне оказать помощь как лучше это все
> соорудить
Перечесть Вирта "Алгоритмы + структуры данных = программа"
Если не сработает - то купить повареную книгу и не мучать больше рыбу.. -
Anatoly Podgoretsky © (14.09.12 13:11) [11]> Павел Калугин (14.09.2012 12:45:10) [10]
Не мучать, в жарить.
Но знания все равно нужны. -
Guest (15.09.12 19:04) [12]Дмитрий, можно сделать так.
Первая таблица - Рыбы
ID Название вида
1 Рыба1
2 Рыба2
3 Рыба3
....
Если видов рыб меньше 10 000, то уникальный идентификатор каждого вида можно представить четырёхзначным десятичным числом.
Совместимость можно представить десятичным числом от 0 до N.
Например,
0 - полностью совместимы.
1 - совместимы, но их не рекомендуется держать вместе по каким-либо причинам.
2 - теоретически совместимы, но на практике известны случаи несовместимости.
3 - не совместимы.
Следует при запуске программы предупредить пользователя, что безопасно держать рыб вместе только в том случае, если они полностью совместимы, а уровни несовместимости (отличные от нуля) представлены для информации.
Тогда вторую таблицу можно представить следующим образом.
Пара | Совместимость | Примечание
------------------------------------------------
00010002 | 0 | Рыбы Рыба1 и Рыба2 совместимы.
00010003 | 3 | Рыбы Рыба1 и Рыба3 не совместимы.
00020003 | 1 | Рыбы Рыба2 и Рыба3 совместимы, но...
....
В этом случае коды 00010002 и 00020001 представляют одну пару, поэтому при каждой операции необходимо делать две проверки. При добавлении пар в таблицу следует проверять, нет ли уже такой пары, и удалять повторы. Можно сортировать коды так, чтобы левая часть была всегда меньше правой. Тогда когда пользователь выбирает двух рыб, достаточно найти их в первой таблице, сформировать из их ID код (так, чтобы левая часть была меньше правой) и найти этот код во второй таблице.
Но конечно этот вариант возможен только если нужно определить совместимость между двумя видами рыб. Если поведение двух видов рыб меняется в зависимости от наличия в аквариуме других видов рыб, тогда всё уже сложнее. А ещё многое зависит от того, какие рыбы - самцы или самки, они могут вести себя по разному. Также некоторые виды рыб рекомендуют держать по-одиночке, других стаями. А вообще не советую вам этот форум. И, судя по вашему посту, вам здесь явно не место.