IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Рекурсивная фунукция и множества, type M=set of 0…99 Описать функцию card(A), подсчитывающую количество
$rvr4vr
сообщение 15.12.2006 21:53
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 51
Пол: Мужской
Реальное имя: Серж

Репутация: -  0  +


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;
**************


может кто поможет?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 15.12.2006 22:00
Сообщение #2


Гость






Бред, конечно, работать со множествами рекурсивно, но что делать...

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;
 К началу страницы 
+ Ответить 
Malice
сообщение 15.12.2006 22:09
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +



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;


Типа того..

Сообщение отредактировано: Malice - 15.12.2006 22:18
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
$rvr4vr
сообщение 15.12.2006 22:09
Сообщение #4


Пионер
**

Группа: Пользователи
Сообщений: 51
Пол: Мужской
Реальное имя: Серж

Репутация: -  0  +


Как то она у тебя не работает. Ввожу [21,4,5,45,66,1] выдает результат 6. она просто посчитала количество элементов во множестве!

Сообщение отредактировано: $rvr4vr - 15.12.2006 22:11
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Malice
сообщение 15.12.2006 22:11
Сообщение #5


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


А что надо ?

Цитата
Описать функцию card(A), подсчитывающую количество элементов

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
$rvr4vr
сообщение 15.12.2006 22:19
Сообщение #6


Пионер
**

Группа: Пользователи
Сообщений: 51
Пол: Мужской
Реальное имя: Серж

Репутация: -  0  +


Цитата

количество элементов во множестве А типа М!


Например, card([5, 8, 23, 1, 115])=4

ввел такое множество [5, 8, 23, 1,121] выдало ошибку переполнения стека. все так же как и в моих вариантах
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Malice
сообщение 15.12.2006 22:19
Сообщение #7


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Вон чего, тогда смотри, я свой пост поправил..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
$rvr4vr
сообщение 15.12.2006 22:24
Сообщение #8


Пионер
**

Группа: Пользователи
Сообщений: 51
Пол: Мужской
Реальное имя: Серж

Репутация: -  0  +


Вот! теперь все по теме! спасибо! give_rose.gif Респект
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 15.12.2006 22:28
Сообщение #9


Гость






$rvr4vr, учись задавать вопросы, договорились... Не надо путать ни себя, ни других. Если У ТЕБЯ просили
Цитата
Описать функцию card(A), подсчитывающую количество элементов, в множестве А типа М.
, то какого ... ты пытался сделать функцию, получающую параметр типа L ???
 К началу страницы 
+ Ответить 
$rvr4vr
сообщение 15.12.2006 22:46
Сообщение #10


Пионер
**

Группа: Пользователи
Сообщений: 51
Пол: Мужской
Реальное имя: Серж

Репутация: -  0  +


Ладно я постараюсь. Перепутал слегка буквы и всех заморочил.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
$rvr4vr
сообщение 18.01.2007 13:21
Сообщение #11


Пионер
**

Группа: Пользователи
Сообщений: 51
Пол: Мужской
Реальное имя: Серж

Репутация: -  0  +


не получается нормально сделать ввод множества. делал так:
э
...
while ch<>#27 do
begin
ch:=readkey;
readln(p);
include(d,p);
end;
...


работает мягко говоря коряво
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 18.01.2007 14:23
Сообщение #12


Гость






Я так понимаю, ты хочешь сделать следующее: если пользователь ввел число, то добавить во множество это число, а если был нажат Esc, то просто закончить ввод? Тогда придется чуть-чуть доработать вот это:
Строки
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 2:26
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"