Форум «Всё о Паскале» _ Теоретические вопросы _ множества(set)
Автор: compiler 22.01.2007 0:23
можно ли выводить (печатать) множества. КАК? почему нельзя написать Write(set1); ?
Автор: klem4 22.01.2007 0:33
var s: Set of byte; i: Byte;
begin ... s := [3, 1, 12]; for i := 0 to 255 do if i in s then writeln(i); ... end.
Только так ...
Автор: Malice 22.01.2007 0:39
Цитата(compiler @ 21.01.2007 20:23)
можно ли выводить (печатать) множества. КАК?
Только вот так:
var s: set of byte; i:byte; begin s:=[1,2,6,9]; for i:=1 to 255 do if i in s then write (i); end.
Цитата
почему нельзя написать Write(set1); ?
А если будет set of (Sun, Mon, Tue, Wed, Thu, Fri, Sat) ? Что печатать ? Множества в памяти хранится как набор бит (1-входит/ 0 - не входит). Так предыдущий пример занимает 7 бит, названия элементов нигде не хранятся.. ps опоздал
М
И ноль потерял
Цитата
for i:=1 to
Автор: compiler 22.01.2007 0:57
Цитата(klem4 @ 21.01.2007 19:33)
Только так ...
код мне не нравится но ладно...
А как быть со словами???
Автор: volvo 22.01.2007 1:11
Цитата
код мне не нравится
В чем проблема? Пиши такой, который нравится... Только вот то, что тебе будет нравиться - не будет работать... "Тебе шашечки, или ехать?" (С)
Цитата
А как быть со словами?
С какими словами? Вопрос ставь так, чтобы его понимал не только ты один...
Автор: compiler 22.01.2007 1:19
Цитата(volvo @ 21.01.2007 20:11)
В чем проблема? Пиши такой, который нравится... Только вот то, что тебе будет нравиться - не будет работать... "Тебе шашечки, или ехать?" (С)
С какими словами? Вопрос ставь так, чтобы его понимал не только ты один...
я имел ввиду как печатать слова с множества. ведь этот алгоритм практически(СЛИШКОМ медлинный если использывать не счетчик, а словарь) неприменим.
А код мне все равно не нравится
Автор: Malice 22.01.2007 1:25
Цитата(compiler @ 21.01.2007 21:19)
я имел ввиду как печатать слова с множества.
Это ты имел ввиду ?
type days=(Sun, Mon, Tue, Wed, Thu, Fri, Sat); const ndays:array [days] of string= ('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'); var s:set of days; dd:days; begin s:=[Sun, Mon, Wed, Thu, Fri, Sat]; for dd:=sun to sat do if dd in s then write (ndays[dd],' '); end.
Цитата
ведь этот алгоритм практически(СЛИШКОМ медлинный если использывать не счетчик, а словарь) неприменим.
Не понял Поясни. Множество может занимать максимум 32 байта, а обработка 32-х байт не может быть слишком медленной, как бы это не делали
Цитата
А код мне все равно не нравится
Покажи свой.
Автор: compiler 22.01.2007 1:28
Цитата(Malice @ 21.01.2007 20:25)
Это ты имел ввиду ?
type days=(Sun, Mon, Tue, Wed, Thu, Fri, Sat); const ndays:array [days] of string= ('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'); var s:set of days; dd:days; begin s:=[Sun, Mon, Wed, Thu, Fri, Sat]; for dd:=sun to sat do if dd in s then write (ndays[dd],' '); end.
Не понял Поясни. Множество может занимать максимум 32 байта, а обработка 32-х байт не может быть слишком медленной, как бы это не делали
Покажи свой.
А если мы заранее не знаем какие будут слова в множество?
А код напишу...позже...
Всем пока инет отключают
Автор: klem4 22.01.2007 11:58
Цитата
А код напишу...позже...
Ждем с нетерпением ...
Автор: Archon 22.01.2007 16:09
А если изначально элементы задать в массиве, а в начале программы на его основе сгенерировать множество? Массив проще вывести.
Автор: volvo 22.01.2007 16:17
Цитата
а в начале программы на его основе сгенерировать множество?
Множество ЧЕГО? Строк? У автора проблемы, похоже, с пониманием того, что строка (слово - это строка, правда, compiler?) не может быть базовым типом для множества... Такие вещи реализуются вручную...
Автор: мисс_граффити 22.01.2007 17:25
Если бы автор объяснил, что такое слово, разговор был бы продуктивнее... Может, это тип words=(slovo1,slovo2,slovo3)? Хотя как-то не согласуется с
Цитата
А если мы заранее не знаем какие будут слова в масиве?
Автор: compiler 22.01.2007 22:23
Не судите меня строго, я ведь не волшебник, а только учусь :=) Я понял свою ошибку из-за которой возникло <<недорозумение>> в одном из сообщений я перепутал термин множество(Set) с масивом(Array). Прошу прощение
Теперь по поводу предложеного кода Дело в том что этот код не учитывает возможности присутствия в множестве повторяющихся элементов ****Пример Входные Данные(Элементы множества): 1,22,333 ***************Печать: 1,2,3 *********** Входные Данные: 1,2,3 ***************Печать: 1,2,3 Вторая (субьективуная) причина -- нечетаемость кода [code] Насчет слов Допустим существует программа: пользыватель вводит фамилии сотрудников (программа должна вспомосчю цыкла записывать фамилии в множество до тех пор пока ввод не будет<<хватит>>), а потом выводит фамилии на экран. Следующий вопрос возможно ли чтобы фамилии выводились в алфавитном порядке.
И напоследок повторяю: Не судите меня строго
Автор: мисс_граффити 22.01.2007 22:36
Цитата
Дело в том что этот код не учитывает возможности присутствия в множестве повторяющихся элементов
Разумеется. А в множестве их и не может быть!
Цитата
Вторая (субьективуная) причина -- нечетаемость кода
Очень субъективно. Ничего такого не заметила.
Цитата
Не судите меня строго
Строго, не строго.... Базовым типом множества может быть только порядковый тип. Строка к такому не относится... Поэтому осуществить это так, как ты собираешься - имхо, невозможно. Можно создать свой тип "Фамилии" и записать туда ВСЕХ сотрудников. А потом в множество выбрать (пусть путем ввода с клавиатуры) некоторых. Понадобится преобразование из строки в фамилию... Но ради чего такое извращение - не понимаю... Можно же воспользоваться более подходящими структурами данных!
Автор: compiler 22.01.2007 22:49
блогадарю за помощ Жаль что моё понимание программирования на маленьком уравне (иначе бы б такой коллизии не возникло) а код мне НЕ НРАВИТСЯ!!!
Автор: мисс_граффити 22.01.2007 22:53
Ну напиши другой - разве кто-то против? Я, например, только рада буду увидеть более оптимальное (коряво сказала... но смысл понятен) решение.
Автор: volvo 22.01.2007 22:53
Цитата
Вторая (субьективуная) причина -- нечетаемость кода
Угу... Очень просто обвинить ВСЕХ в том, что ИХ код нечитаем. Особенно, когда ни одной строки ТВОЕГО кода никто так и не увидел... Покажи же нам этот шедевр, достойный всяческого внимания...
Автор: compiler 22.01.2007 23:00
Цитата(volvo @ 22.01.2007 17:53)
Угу... Очень просто обвинить ВСЕХ в том, что ИХ код нечитаем. Особенно, когда ни одной строки ТВОЕГО кода никто так и не увидел... Покажи же нам этот шедевр, достойный всяческого внимания...
Я невкоем случае не хотел некого обвинить Разве стремление к лучшему -- негативно Свой шедевр написатт НЕ МОГУ по причине слабых знаний в математики и программировании (как я говорил:<<только учусь>>) однако к опытным программистам читая эти строки может прийти гениальный МЕМ.
Автор: мисс_граффити 22.01.2007 23:07
Цитата
Разве стремление к лучшему -- негативно
Конструктивное стремление - позитивно. Когда оно выражается в форме: "Вот так будет лучше, чем у вас...". А когда речь о "у вас плохо, потому что я ничего не понял" - по-моему, это проявление стремления переложить вину за отсутствие знаний на кого-то. В данном случае наиболее позитивно - сесть и разобраться с этим кодом. Как 6 строк кода, из которых 2 - объявление переменных, 2 - операторные скобки и одна - присваивание, могут быть нечитаемыми?
Автор: compiler 22.01.2007 23:10
Цитата(мисс_граффити @ 22.01.2007 18:07)
Конструктивное стремление - позитивно. Когда оно выражается в форме: "Вот так будет лучше, чем у вас...". А когда речь о "у вас плохо, потому что я ничего не понял" - по-моему, это проявление стремления переложить вину за отсутствие знаний на кого-то. В данном случае наиболее позитивно - сесть и разобраться с этим кодом. Как 6 строк кода, из которых 2 - объявление переменных, 2 - операторные скобки и одна - присваивание, могут быть нечитаемыми?
Эту задачу я решу лучьше(Вопрос когда) и обязательно первым делом положу на этот форум
Автор: Malice 22.01.2007 23:25
Цитата
Пример Входные Данные(Элементы множества): 1,22,333
Таких входных данных быть не может в принципе, не веришь - проверь. Фамилии в множество тоже не добавишь..
Цитата
Следующий вопрос возможно ли чтобы фамилии выводились в алфавитном порядке.
Можно, отсортировав массив, в котором они находятся.
Цитата(compiler @ 22.01.2007 19:10)
Эту задачу я решу лучыше(Вопрос когда) и обязательно первым делом положу на этот форум
Будем ждать. Только определимся так: Множество - это Set of , а не массив.
Автор: compiler 22.01.2007 23:46
Цитата(Malice @ 22.01.2007 18:25)
Будем ждать. Только определимся так: Множество - это Set of , а не массив.
Я уже просил прощение за допущенную коллизию А код кто-то да напишет
Автор: volvo 23.01.2007 1:12
Цитата
А код кто-то да напишет
Да? Чтобы ты и его тоже назвал неэффективным? Извини, код нужен тебе - ты и пиши... И радуйся, что твой код самый-самый. А для этого лучшее средство - НИКОМУ и НИКОГДА его не показывать... Чтоб никто ничего не сказал...
В общем, как напишешь - обращайся в Приват к кому-нибудь из модеров/админов, а этот флейм я закрываю...