Помощь - Поиск - Пользователи - Календарь
Полная версия: Структуры данных
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
gamordzhoba
дана задача, и она ни фига не получается. help me please.
Реализуйте структуру данных множество для чисел от 0 до 10^8. Множество должно поддерживать операции INSERT(x) (добавить элемент x), FIND(x) (проверить наличие в множестве элемента x) и ERASE(x) (удалить из множества x).

Входные данные
В первой строке записано целое N (1 <= N <= 10^6) -- количество операций. Далее записаны сами операции парами чисел P, x (P обозначает номер операции). P = 0 для INSERT(x), P = 1 для FIND(x), P = 2 для ERASE(x).

Выходные данные
Для каждой операции FIND(x) выводите TRUE если элемент найден и FALSE в противном случае.

Пример

Ввод

8
0 0
0 3
1 1
0 1
1 1
1 0
2 0
1 0


Вывод

FALSE
TRUE
TRUE
FALSE
volvo
gamordzhoba
Загляни в эту тему: Казнь

Я там как раз реализовывал все операции над множеством (как над последовательностью бит), которые тебе нужны... Только N поставь то, что нужно тебе...
gamordzhoba
Помогите дореализовать программу.

текст:

program big_set;
type BigSet = array[0..12499999]of byte;
var BSet : BigSet;
x,n,i,k : integer;

procedure AddElement(x : integer);
begin
BSet[x div 8] := (BSet[x div 8]) or (1 shl (x mod 8));
end;

procedure RemoveElement(x : integer);
begin
BSet[x div 8] := (BSet[x div 8]) and not (1 shl (x mod 8));
end;

function FindElement(x : integer) : boolean;
begin
FindElement := boolean((BSet[x div 8]) and (1 shl (x mod 8)));
end;

begin
assign(input,'ga.in');
reset(input);
fillchar(BSet,sizeof(BSet),0);
readln(n);
for i := 1 to n do
begin
readln(k,x);
case k of
0 :AddElement(x);
1 :writeln(FindElement(x));
2 :RemoveElement(x);
end;
end;
end.
virt
что именно добавить ,все ведь работает.
virt
Ты имеешь в виду что окно закрывается? Если да то добавь в самом конце readln;
gamordzhoba
вывод нужен. выходные данные.
volvo
Имеешь в виду вывод в файл?
begin
assign(input,'ga.in');
reset(input);

assign(output,'ga.out');
rewrite(output);

fillchar(BSet,sizeof(BSet),0);
readln(n);
for i := 1 to n do
begin
readln(k,x);
case k of
0 :AddElement(x);
1 :writeln(output, FindElement(x));
2 :RemoveElement(x);
end;
end;
end.
или тебе что-то другое? Уточняй сразу, почему все надо клещами вытягивать?
gamordzhoba
так он ничего не выводит .
volvo
Ты объяснить можешь, ЧТО он должен выводить??? mad.gif

Куда должен выводить? (Файл / консоль)
Ты же ничего же не говоришь, кроме "вот вам задание, решите !!!" ... "не работает!!!"
gamordzhoba
он не выводит в файл. почему то.
klem4
действительно интересно .. код в студию yes2.gif
Atos
Цитата
assign(input,'ga.in');
reset(input);
  assign(output,'ga.out');
  rewrite(output);

blum.gif Close потерялось!!!
"Никогда не доверяйте компилятору" ;)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.