вот условие задачи:
type name= ( Вася, Володя Ира, Сергей и т.д.)
gosty=set of name;
gruppa=array[name] of gosty;
Программа должна определить есть ли в группе хотя бы 1 человек, побывавший в гостях у всех остальных из группы ( gruppa[x]- множество людей, бывавших в гостях у человека с именем x)
вот насколько я понимаю теорию...
type name = ( Сергей , Миша, Ира)
gosty sen of name ;
gruppa=array[name] of gosty;
получеются все подмножества множества Сергей, Миша , Ира, записанных в массиве, т.е
[];
[Сергей];
[Миша];
[Ира];
[Сергей,Миша];
[Сергей, Миша, Ира];
[Миша, Ира];
[Ира, Сергей];
вот теперь возникает вопрос что такое gruppa[Сергей] =????
как это всё распределяется в множестве... помогите кто может что подсказать
далее не совсем понятно условие задачи.. препод полный вася ничё не объясняет... это последняя задача по курсу..
вот_)
объясните мне чёнить плз
В поиск... Дословно это же задание решалось!
я шерстил уже нифига не нашёл, помоги плз
http://forum.pascal.net.ru/index.php?s=&showtopic=4434&view=findpost&p=37662
Не оно?
оо спс, БОЛЬШОЕ СПС))))
Если не сложно объясните что тут почём или дайте почитать чёнить а то я не понимаю вообще о чём тут речь идёт.. мне надо такую же прогу только чтобы чел-к с клавиатуры забивал кто у кого в гостях был... глупая задача(
ребят плз помогите... завтра надо сдать а то выгонят нафих(
там же комментарии есть
если что-то непонятно, задавай конкретные вопросы.
конкретно, что нужно сделать чтобы пользователь сам вводил кто у кого в гостях был! а я ваще не врубаюсь как это сделать!(((( да и вообще есть что нить почитать о множествах а то везде как то всё скудно!!!
ну например так:
1) сделать функцию, переводящую строку в имя (как перечислимый тип).
то есть передаешь ей строку, там сравниваешь (if s='misha' then... ) и возвращаешь имя.
2) спрашиваешь у кого в гостях были, преобразуешь строку с помощью этой функции, запоминаешь хозяина.
3) спрашиваешь, кто был, и делаешь include(group[хозяин],имя_гостя)
Добавлено через 1 мин.
для "почитать":
http://www.lectureroom.net/index.php?id=312
http://pascal.guti.ru/sets.html
а я не могу проще сделать , ведь у меня type name= ( Вася, Володя Ира, Сергей и т.д.) определённое ограниченное количество!
я не могу понять вот что:
for i:=1 to 10 do begin (по условию скоко было чел-к)
writeln('kto bil v gostax y',k[i]); k-массив содержащий список имён
тогда уж так:
for i:=vasya to misha do
for j:=vasya to misha do
if j in group[i] then ...
type
name = (vasya, volodya, ira, lida, marina, misha);
var
i, j: name ;
begin
for i := low(name) to high(name) do
begin
writeln('vvedite kto bil v gostax y',name);
То, что ты привел - не будет компилироваться... Смотри:
type
name = (vasya, volodya, ira, lida, marina, misha);
const
names: array[name] of string = (
'vasya', 'volodya', 'ira', 'lida', 'marina', 'misha'
);
var
i, j: name;
begin
for i := low(name) to high(name) do begin
writeln('vvedite kto bil v gostax y', names[i]);
readln(s);
{ теперь читаешь строку, разделяешь ее на слова, и ... }
{ допустим, в строке присутствует имя, хранящееся сейчас в P }
for j := low(name) to high(name) do
if names[j] = P then begin
{ J - это как раз переведенное в тип Name имя ... Делаешь с ним то, что нужно }
break;
end;
if upstr(names[j]) = upstr(P) then begin(реализация функции upstr как для латинских символов, так и для кириллицы есть на форуме)
напишите мну кто нить эту прогу от начала до конца плз, извините за флуд и создание тем в задачах на заказ, напишите скоко стоить будет, оч. прошу, правда не понимаю как это делать вапще(((
Я же все уже рассказал, надо было только собрать:
type(комментарии добавлять не стал, все выдрано из уже прокомментированных программ)
name = (vasya, volodya, ira, lida, marina, misha);
guests = set of name;
group = array[name] of guests;
const
limits = [' ', ','];
names: array[name] of string = (
'vasya', 'volodya', 'ira', 'lida', 'marina', 'misha'
);
function vezde(gr: group): boolean;
var
i, j: name;
res: boolean;
was: set of name;
begin
res := false;
for i := low(name) to high(name) do begin
was := [];
for j := low(name) to high(name) do
if (i in gr[j]) then was := was + [j];
res := res or ((was + [i]) = [low(name) .. high(name)])
end;
vezde := res
end;
var
_group: group;
i,back,n : byte;
i_name, j_name: name;
s, the_word: string;
begin
for i_name := low(name) to high(name) do begin
writeln('vvedite kto bil v gostax y ', names[i_name]);
readln(s);
i := 1;
while(i<=length(s)) do begin
while(i<=length(s)) and (s[i] in limits) do inc(i);
if i<=length(s) then begin
back := i;
while(i<=length(s)) and not(s[i] in limits) do inc(i);
inc(n);
the_word := copy(s, back, i-back);
for j_name := low(name) to high(name) do
if names[j_name] = the_word then begin
include(_group[i_name], j_name);
break;
end;
end;
end;
end;
writeln(vezde(_group))
end.
Volvo Большое при большое списськи)) просто не понимаю я этот паскаль, мну учили сначала на си, недоучили а счас на паскале а прпод вообще ничё не грит..!"(((((((
извините что я ВАМ наверно надоел , но у мя такая ошибка 105 at 00404077
Ошибки 105 (если ты НЕ правил мою программу) не может быть по определению: я с файлами нигде не работал... Это первое... А второе - ты разделом не ошибся? Ты получил ошибку где угодно,только не в Турбо Паскале... А в ЭТОМ разделе - программы именно для него...
Так что претензии предъявляй сам себе.