Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ множетва

Автор: Oleg55 12.11.2006 2:35

в классе 26 учеников, чьи имена A..Z. На экзамене 15 билетов 1..15. Когда в кабинет входит 10 ученик, то билеты, отвеченные предыдущими учениками кладут обратно. Промодулировать ход екзамена

как ввести множества я понимаю, но вот как дальше....помогите


Прикрепленные файлы
Прикрепленный файл  EKZAMEN.PAS ( 459 байт ) Кол-во скачиваний: 270

Автор: volvo 12.11.2006 2:47

writeln('na4aljnoe mnozestvo iz u4enikov:');
for c:='A' to 'Z' do
sk:=sk+[c];
blink.gif blink.gif

А если вот так:
sk := ['A' .. 'Z'];

?

Автор: Oleg55 12.11.2006 2:50

можно и так,наверное, но как дальше wacko.gif

Автор: volvo 12.11.2006 3:19

Вот так:

var
stud: char;
quest: set of byte;
current: byte;

begin
quest := [1 .. 15];
for stud := 'A' to 'Z' do begin

if ord(stud) - ord('A') + 1 = 12 then begin
writeln('Возвращаем билеты...');
quest := [1 .. 15];
end;

write('Студент: ', stud, ' входит в кабинет...');

repeat
current := random(15) + 1;
until current in quest;

writeln(' ... и берет билет №', current);
exclude(quest, current);

end;
end.
Все билеты вернулись при входе 12-го ученика, если сделать это при входе 10-го, то на 15 билетов будет 17 человек, и двоим не хватит (а программа зациклится).

Или ты имел в виду "при входе каждого десятого"? Тогда вот так:

.
..
if (ord(stud) - ord('A') + 1) mod 10 = 0 then begin
writeln('Возвращаем билеты...');
quest := [1 .. 15];
end;
...

Автор: Oleg55 12.11.2006 3:40


спасибо огромное, только объясните, что такое EXCLUDE?

Автор: volvo 12.11.2006 3:53

exclude(quest, current);
то же самое, что и
quest := quest - [current];
, только работает побыстрее... Хотя есть еще одна причина, по которой я предпочитаю использовать именно include/exclude вместо операций +/-, но к теме обсуждения она не относится... smile.gif

Автор: Bokul 12.11.2006 3:57

Цитата
Хотя есть еще одна причина, по которой я предпочитаю использовать именно include/exclude вместо операций +/-, но к теме обсуждения она не относится...

Ага, думаешь можно так просто взять заинтриговать и все? smile.gif Ну-ка давай открывай секреты yes2.gif

Автор: Oleg55 12.11.2006 5:59

[mne toze stalo interesno