Розглянемо використання множин на прикладі програми відомої гри "Бики і корови". Комп'ютер задумує чотиризначне число, котре не містить двох однакових цифр. Ви набираєте свої число і комп'ютер повідомляє вам кількість "биків" (точно вгаданих цифр) та кількість "ко-
рів" (цифри, котрі є в задуманому числі, але не на свому місці).
Наприклад, задумане комп'ютером число 5734, а ви набрали 0753. Результат буде 1 бик і 2 корови. Гра продовжується до тих пір, поки ви не отримаєте 4 бики.
PROGRAM mooo(INPUT,OUTPUT);
USES Crt;
TYPE play='0'..'9';
score=0..4;
VAR pool,target:SET OF play;
a,b,c,d:play;
seed,iter:longint;
bulls,cows:score;
pausa:char;
FUNCTION random:REAL; {Випадкове число в інтервалі (0,1)}
BEGIN random:=seed/65536;
seed:=(25173*seed+13849) MOD 65536;
END; {random}
FUNCTION number:play; {Помістити випадкову цыфру в target}
VAR ch:CHAR;
BEGIN
REPEAT ch:=CHR(TRUNC(10*random)+ORD('0'));
UNTIL ch IN pool;
number:=ch;
pool:=pool-[ch]; { Різниця множин }
target:=target+[ch]; { Об'єднання множин }
END; {number}
PROCEDURE try(comp_number:CHAR); {Ввід і перевірка цифри}
VAR ch:CHAR;
BEGIN
READ(ch);
IF ch IN target THEN
IF ch=comp_number THEN bulls:=SUCC(bulls)
ELSE cows:=SUCC(cows)
END; {try}
BEGIN {програма}
CLRSCR;
WRITE('Задайте випадкове число в дiапазонi 0..65535 ');
READLN(seed);
WRITELN(' А тепер вiдгадуйте число');
pool:=['0'..'9']; { Всі допустимў цифри }
target:=[]; { Пуста множина }
a:=number; b:=number;
c:=number; d:=number; { Комп'ютер задумує число }
iter:=0;
REPEAT
bulls:=0; cows:=0;
try(a); try(b); try(c); try(d);
iter:=iter+1;
WRITELN('Бикiв: ',bulls:1,' корiв: ',cows:1,' Спроба ',iter:2);
READLN
UNTIL bulls=4;
pausa:=readkey;
END. {програма}
Тема. Файловий тип даних. Призначення файлів. Файли послідовного доступу. Доступ до елементів файлу. Вікно файлу.
Тип. Лекція 15.
ПЛАН.
Організація файлів. Файловий тип даних. Призначення файлів.