uses sysutils; const f_input: string = 'list.txt'; {Вхідний файл, кожний рядок якого містить кількість завдань, які потрібно вибрати випадковим чином з файлу, назву якого подано в кінці рядка} foutput: string = 'task.html'; {Вихідний файл, утворений дописуванням вибраних завдань та відповідей у випадковому порядку} fanswer: string = 'answer.txt'; {Вихідний файл, утворений дописуванням вибраних завдань та відповідей початковому порядку;} nu=9; {Максимальна кількість варіантів відповіді для одного завдання} abc: string='ABCDEFGHIJKLMNOPQRSTUVWXYZ'; var w: array[0..10000] of word; c: char; u: array[0..nu] of byte; t,t1,t2: string; s: array[0..nu+1] of ansistring; off,a,i,o,it: textfile; ja,j,k,l,m,n,p: word; {$I-} procedure rep(s: string); var o:textfile;BEGIN assign (o,'ReadMe.txt'); rewrite(o); writeln(o,s); close(o); halt(0) END; BEGIN if not fileexists(f_input) then rep('Файл '+f_input+' відсутній!'); if not fileexists(foutput) then rep('Файл '+foutput+' відсутній!'); assign(i,f_input); reset(i); assign(o,foutput); reset(o); readln(o,t); readln(o,t1); readln(o,t2); close(o); rewrite(o); writeln(o,t); writeln(o,t1); writeln(o,t2); assign(a,fanswer); rewrite(a); ja:=0; {ja - лічильник кількості завдань} j:=0; randomize; repeat inc(j); read(i,k); {k - кількість завдань з файлу} if (ioresult<>0) then rep('Помилка '+ 'зчитування в рядку '+inttostr(j)); readln(i,t); {t - назва файлу завдань} while t[1]=' ' do delete(t,1,1); if fileexists(t) and (k>0) then BEGIN assign(it,t); reset (it); n:=0; repeat readln(it,c); if c<>' ' then inc(n) until eof(it); close(it); n:=(n div 2)-1; {n - загальна кількість завдань у файлі t} if nw[m] then m:=l; w[0]:=w[m]; w[m]:=w[j]; w[j]:=w[0] end; reset(it); j:=0; {Лічильник рядків, перший символ яких відмінний від прогалини " "} assign(off,'off.txt'); rewrite(off);{!!!} repeat readln(it,s[0]); writeln(off,s[0]);{!!!} if s[0][1]<>' ' then inc(j); if (j+1) div 2 =w[k] then begin inc(ja); write(a,ja); {Запис умови завдання ja} writeln(o,s[0]); l:=0; {Лічильник варіантів відповіді} repeat inc(l); readln(it,s[l]); until s[l][1]<>' '; dec(l); if l>0 then begin {Розташування випадковим чином чисел з діапазону 1..l у масиві u[1..l]} for m:=1 to l do u[m]:=m; for m:=1 to l do begin p:=1+random(l-m+1); u[0]:=u[p]; u[p]:=u[l-m+1]; u[l-m+1]:=u[0] end; {Запис варіантів відповіді} for m:=1 to l do writeln(o,s[u[m]]); {Запис правильної послідовності варіантів відповіді завдання ja} for m:=1 to l do for p:=1 to l do if u[p]=m then write(a,' ',abc[p]) end; writeln(o,s[l+1]); inc(k); inc(j); writeln(a); close(off) end; until (n0) then rep('Файл '+t+' відсутній!'); until eof(i); writeln(o,''); close(a); close(i); close(o) END.