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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2012, 22:07   #1
Jaga_89
 
Регистрация: 09.02.2012
Сообщений: 8
По умолчанию Первый элемент множества

Есть переменная типа integer, нужно присвоить ей значение первого элемента множества. Множество типа set of byte. Такое возможно? В целом, как определить первый элемент множества?
Jaga_89 вне форума Ответить с цитированием
Старый 15.02.2012, 22:13   #2
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

насколко помню делал это обычным перебором... так как в byte может храниться лишь числа от 0 до 255 то через обычный цикл for i:=1 to 255 do и каждый проход сверять входит ли i в данное множество, если входит... собственно цель достигнута...
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 15.02.2012, 22:19   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Low(Byte) и вернет первый элемент множества set of byte. High(Byte) - последний.
Это справедливо и для других множеств
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.02.2012, 22:23   #4
Jaga_89
 
Регистрация: 09.02.2012
Сообщений: 8
По умолчанию

В том то и дело, что тип множество - это не массив. И если

var
L: set of byte;
n: integer;

то

for i:=1 to 255 do
if L[1]=i then n:=L[1];

не пойдёт, при компиляции будет ошибку по несоблюдению типов..
Я надеялся, что можно определить первый элемент вот так: L[1], и все дела.. но не проходит компиляцию =(
Jaga_89 вне форума Ответить с цитированием
Старый 15.02.2012, 22:24   #5
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

кажись я немного попутал задание... мое минимальный находит)
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 15.02.2012, 22:28   #6
Jaga_89
 
Регистрация: 09.02.2012
Сообщений: 8
По умолчанию

Аватар, это будет выглядеть так?

var
L: set of byte;
n: integer;

n:=Low(L);
Jaga_89 вне форума Ответить с цитированием
Старый 15.02.2012, 22:29   #7
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

вообщето я писал об вхождении в множество... а не об сравнивании...

Код:
for i:=1 to 255 do
if  i in L then
begin
n:=i;
break;
end;
такой принцип...
но такой алгоритм найдет лишь наименьший элемент...
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 15.02.2012, 22:32   #8
Jaga_89
 
Регистрация: 09.02.2012
Сообщений: 8
По умолчанию

VIK_aka_TOR, Спасибо!
Jaga_89 вне форума Ответить с цитированием
Старый 15.02.2012, 22:35   #9
TorrentTor
Форумчанин
 
Аватар для TorrentTor
 
Регистрация: 02.11.2011
Сообщений: 105
По умолчанию

И все же какое то некорректное задание.
TorrentTor вне форума Ответить с цитированием
Старый 16.02.2012, 10:48   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от TorrentTor
И все же какое то некорректное задание.
я соглашусь.
действительно, некорректное!
Потому что в понятии множества нет понятия ОЧЕРЁДНОСТИ (если это вызывает сомнения, то легко убедится в этом, посмотрев, например, статью на википедии).

И приведённые решения показали НЕКОРРЕКТНОСТЬ задания.
По сути осуществляется поиск не первого элемента (которого не существует), а элемента множества с минимальным значением кода.

впрочем, я уверен, что преподавателей такое решение вполне устроит.


p.s. только перебирать, всё таки, нужно начиная с нуля:
Код:
for i:=0 to 255 do
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Записать первый элемент массива в конец Pecho Помощь студентам 3 24.11.2010 23:14
Паскаль. Первый отрицательный элемент. DaRus Помощь студентам 7 18.12.2009 21:26
первый нулевой элемент массива shelest Помощь студентам 2 15.11.2009 12:38
Удалить первый положительный элемент после максимального pavel42 Помощь студентам 3 25.05.2009 15:30
Первый нечетный элемент каждой строки удвоить (предполагается, что в каждой строке есть нечетный элемент Галина002 Помощь студентам 1 18.03.2009 06:30