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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2012, 11:55   #1
Решетова Алена
Форумчанин
 
Регистрация: 13.12.2012
Сообщений: 116
По умолчанию Free Pascal. Низкоуровневое управление байтовыми множествами.

Здравствуйте) Помогите пожалуйста вникнуть в лабораторную. Язык FREE PASCAL. Подскажите как написать функцию, остальные сделаю сама.
Низкоуровневое управление множествами.
Разработать функции для низкоуровневого управления байтовыми множествами, реализующие операции in, +, -, * и фунции include, exclude средствами прямого доступа к оперативной памяти множества.
{ тип множества }
type ByteSet=set of byte;
{ аналог операции in }
function inSet(e:byte; bset:ByteSet):boolean;
{ аналог операции + }
function addSet(b1set,b2set:ByteSet):ByteSet ;
{ аналог операции - }
function subSet(b1set,b2set:ByteSet):ByteSet ;
{ аналог операции * }
function mulSet(b1set,b2set:ByteSet):ByteSet ;
{ аналог функции include }
function includeSet(e:byte; bset:ByteSet):ByteSet;
{ аналог функции exclude }
function excludeSet(e:byte; bset:ByteSet):ByteSet;

Одну любую. Или просто идею решения. Если кто может, можно и несколько функций))) ПОДЧЕРКИВАЮ: средствами прямого доступа к оперативной памяти множества.

За любую помощь очень благодарна!!!
Решетова Алена вне форума Ответить с цитированием
Старый 13.12.2012, 14:40   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Это кто же такие задания даёт?! Это же жуть и кошмар!
и главное - ЗАЧЕМ?!
Я, например, только предполагать могу, каким образом хранится множество байт в памяти (без этого доступ к памяти организовывать бессмыслено)...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.12.2012, 14:56   #3
Решетова Алена
Форумчанин
 
Регистрация: 13.12.2012
Сообщений: 116
По умолчанию

В универе( на втором курсе. Предмет называется: структуры данных и алгоритмы...
Решетова Алена вне форума Ответить с цитированием
Старый 13.12.2012, 15:22   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

сочувствую. я лично - пас...

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

в любом случае, я лично подобное задание НЕ ОДОБРЯЮ! Это как плац ломом подметать - и затраты такие же, и результат, примерно, такой же...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.12.2012, 16:15   #5
Решетова Алена
Форумчанин
 
Регистрация: 13.12.2012
Сообщений: 116
По умолчанию

Спасибо за сочувствие) тоже поддержка)
П.С. есть один хороший человек, которого я уже замучила с такими вопросами).. А сам препод делает вид, что это элементарно!)
Решетова Алена вне форума Ответить с цитированием
Старый 13.12.2012, 16:50   #6
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

На 100% не подскажу, но более чем уверен, что набор (set of) имеет такую же структуру как и массив. Т.е. можно попробовать написать функции на ассемблере (не уверен что free paskal с ним дружит) или посредством указателей получать доступ к значениям байтов. Сами же функции по своей реализации действительно элементарные.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 13.12.2012, 17:40   #7
Решетова Алена
Форумчанин
 
Регистрация: 13.12.2012
Сообщений: 116
По умолчанию

надо посредством указателей..но как
Решетова Алена вне форума Ответить с цитированием
Старый 13.12.2012, 17:52   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,322
По умолчанию

Цитата:
Множество в памяти хранится как массив битов, в котором каждый бит указывает является ли элемент принадлежащим объявленному множеству или нет. Максимальное число элементов множества 256, а данные типа множество могут занимать не более 32 байт.
Из интернета

Update 18:30
Работает в лазарусе:
Код:
  function inSet(e: byte; bset: ByteSet): boolean;
  var
    b: ^byte;
  begin
    b := @bset + e div 8;
    Result := b^ shr (e mod 8) and 1 = 1;
  end;

  function addSet(b1set, b2set: ByteSet): ByteSet;
  var
    b0: byteset;
    bp1, bp2: ^byte;
    i: byte;
  begin
    b0 := b1set;
    bp1 := @b0;
    bp2 := @b2set;
    for i := 0 to (high(b1set) + 1) div 8 - 1 do
    begin
      bp1^ := bp1^ or bp2^;
      Inc(bp1);
      Inc(bp2);
    end;
    Result := b0;
  end;
Хотя, может это и не то
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 13.12.2012 в 18:37.
BDA вне форума Ответить с цитированием
Старый 13.12.2012, 18:01   #9
Решетова Алена
Форумчанин
 
Регистрация: 13.12.2012
Сообщений: 116
По умолчанию

оооо спасибо большое) только у меня вот эта строка не компилируется b := @bset + e div 8; (16) Warning: Arithmetic "+" on untyped pointer is unportable to {$T+}, suggest typecast. Делаю в Geany под Windows7

но работает))

Последний раз редактировалось Решетова Алена; 13.12.2012 в 19:00.
Решетова Алена вне форума Ответить с цитированием
Старый 13.12.2012, 18:50   #10
Решетова Алена
Форумчанин
 
Регистрация: 13.12.2012
Сообщений: 116
По умолчанию

может и не то.. препода не понять.. но все равно хоть что-то))) спасибо огромное)))
Решетова Алена вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
free pascal Риналь Паскаль, Turbo Pascal, PascalABC.NET 2 05.04.2012 14:55
Free Pascal Waqq Паскаль, Turbo Pascal, PascalABC.NET 1 30.12.2011 18:47
Turbo Pascal и Free Pascal , в чем разница? antoxann Паскаль, Turbo Pascal, PascalABC.NET 31 09.11.2011 07:52
а free pascal не читает задачи которые написаны на turbo pascal? demonara Паскаль, Turbo Pascal, PascalABC.NET 3 25.05.2009 16:28
Модуль для работы с множествами [Pascal] iFool Помощь студентам 2 20.10.2008 22:04