Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2011, 00:08   #1
BAMbarBIO
 
Регистрация: 29.05.2011
Сообщений: 8
По умолчанию Через множества заданы сорта роз,выращиваемых цветоводами. Ввод множества с клавиатуры,сравнение множеств

Помогите пожалуйста решить задау вот такую:
Известны сорта роз выращиваемых тремя цветоводами: "Анжелика", "Виктория", "Гагарин", "Ave Maria", "Катарина", "Юбилейная". Определить те сорта, которые имеются у каждого из цветоводов, которые есть хотябы у одного из цветоводов, которых нет ни у одного из цветоводов.

Не знаю как заполнить множество с клавиатуры, и потом сравнить эти три множества. Пожалуйста подскажите как сделать. Если есть у кого похожая задача скиньте плиз!! ((
BAMbarBIO вне форума Ответить с цитированием
Старый 31.05.2011, 08:34   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

зря не пользуетесь поиском..

вот о том, как вывести множество: вывести множество на экран

а вот решение ВАШЕЙ задачи: - ЗДЕСЬ

p.s. ввод множеств с клавиатуры подразумевает ввод некоторых кодов/шифров/мнемоник/идентификаторов и потом программа уже перекодирует введённое пользователем в элемент множества. Если интересно - напишу пример..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 31.05.2011, 09:04   #3
BAMbarBIO
 
Регистрация: 29.05.2011
Сообщений: 8
По умолчанию

Serge_Bliznykov,
А как можно в memo1 написать какие розы у каждого цветовода? возможно например в memo1 написать через запятые в виде названий роз, а потом их сравнить, или их записать в массив, а потом в memo1 ввести тлько цифры через запятые?
BAMbarBIO вне форума Ответить с цитированием
Старый 31.05.2011, 09:48   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

погодите-ка!
Сделать можно всё. Но в том и прелесть использования множеств (множественного типа данных), что к нему применимы операции логики!
Совпадение множеств.
Пересечение множеств.
Объединение множеств...
Т.е. элементарно получить сорта роз, которые есть, например, у первого цветовода, и нет у второго... или какие сорта есть у всех трёх... и т.д.
Это всё делается одной(парой) строчек кода.

А Вы хотите съэмулировать множества с помощью других структур (коллекции TStringList, например, как Вы предлагаете) и потом Вам понадобится писать свою реализацию допустимых на множеством операций. Это Вам НЕ НУЖНО!


А вот вывести результаты в Memo - элементарно. Смотрите ссылку - как вывести множество на экран. Заменяйте WriteLn на Memo1.Lines.Append() и всё!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 31.05.2011, 11:43   #5
BAMbarBIO
 
Регистрация: 29.05.2011
Сообщений: 8
По умолчанию

а как тогда вывести множество на memo1, например вот прога

Код:
procedure TForm1.Button1Click(Sender: TObject);
type cwety=set of(Angelica,Victoria,Gagarin,AveMaria,Katarina,Jubileinaj);
var  a:cwety;
     b:array[1..6]of cwety;
begin
a:=[Angelica,Victoria];
b[1]:=a;
memo1.Lines.add(b[1]);
end;
то есть вывести в memo1 множество a



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 31.05.2011 в 13:03.
BAMbarBIO вне форума Ответить с цитированием
Старый 31.05.2011, 13:17   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) используйте теги для оформления кода!

Цитата:
то есть вывести в memo1 множество a
2) по ссылке не ходили? или не поняли, какой там трюк использовался?...
поясню на вашем примере:
Код:
procedure TForm1.Button1Click(Sender: TObject);
type CwetSort = (Angelica,Victoria,Gagarin,AveMaria,Katarina,Jubileinaj);
const
  PrintCvetyName : array[low(CwetSort)..high(CwetSort)] of
     string = ('Анжелика','Виктория','Гагарин','Ave Maria','Катарина','Юбилейная');


var  a  : set of CwetSort;
    OneCS : CwetSort;
begin
  a:=[Angelica,Victoria];
 
  // вывод в Memo1
  Memo1.Lines.Clear;

  {а вот так можно вывести отображение имен элементов множества.
    но, разумеется, эти имена надо где-то задать.    }
  Memo1.Lines.Append('В множесте A содержатся записи: ');
  for  OneCS := low(CwetSort) to high(CwetSort) do
    if OneCS in a then memo1.Lines.Append(PrintCvetyName[OneCS]);

end;


p.s. не поленюсь ещё раз процитировать свои же слова:
Цитата:
Сообщение от Serge_Bliznykov
множество - очень удобная (иногда) штука. Но вот с вводом и выводом всегда большие проблемы...
Единственный способ в Паскале вывести содержимое переменной типа "множество" на экран — это перебирать в цикле все возможные элементы, которые могут составлять множество, проверять наличие этого элемента в печатаемом множестве, и, если оно там есть - вывод элемента на экран..
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
дано два множества точек.Найти пересечение и разность этих множеств.Координаты точек X и Y вводить с клав Degster Паскаль, Turbo Pascal, PascalABC.NET 1 23.05.2011 16:35
дано два множества точек.Найти пересечение и разность этих множеств.Координаты точек X и Y вводить с клав Degster Паскаль, Turbo Pascal, PascalABC.NET 0 15.05.2011 18:32
MySQL сравнение множества с множеством. vedro-compota SQL, базы данных 6 31.01.2011 14:05
Ввод множества чисел PlayerDark Общие вопросы Delphi 1 15.06.2009 22:47
Множества... сравнение алфавитов Верчик Помощь студентам 6 11.06.2007 00:28