type M=set of 0…99 Описать функцию card(A), подсчитывающую количество элементов, в множестве А типа М.
Вот так я попытался сделать, но естественно не получилось.
type M=set of 0..99;
L=set of byte;
function card(s:L):integer;
const k:m= [];
var i,j:integer;
begin
if s=k then card:=j;
else begin
for i:=0 to 99 do
if i in s then
begin
exlude(s,i);
j:=j+1;
card:=card(s);
end;
end;
**************
Бред, конечно, работать со множествами рекурсивно, но что делать...
function card(s: L): integer;
var i: integer;
begin
if s = [] then card := 0
else begin
i := 0;
while not (i in s) do inc(i);
exclude(s, i);
card := card(s) + 1;
end;
end;
type M=set of 0..99;
L=set of byte;
function card(s:L):integer;
const k:m= [];
var i:integer;
begin
if s=k then card:=0;
else begin
i:=0;
while not (i in s) do inc (i);
exclude(s,i);
card:=card(s)+byte(i<100);
end;
end;
Как то она у тебя не работает. Ввожу [21,4,5,45,66,1] выдает результат 6. она просто посчитала количество элементов во множестве!
А что надо ?
Вон чего, тогда смотри, я свой пост поправил..
Вот! теперь все по теме! спасибо! Респект
$rvr4vr, учись задавать вопросы, договорились... Не надо путать ни себя, ни других. Если У ТЕБЯ просили
Ладно я постараюсь. Перепутал слегка буквы и всех заморочил.
не получается нормально сделать ввод множества. делал так:
э
...
while ch<>#27 do
begin
ch:=readkey;
readln(p);
include(d,p);
end;
...
Я так понимаю, ты хочешь сделать следующее: если пользователь ввел число, то добавить во множество это число, а если был нажат Esc, то просто закончить ввод? Тогда придется чуть-чуть доработать вот это:
http://forum.pascal.net.ru/index.php?s=&showtopic=2361&view=findpost&p=38136