МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА"
Інститут КНІТ
Кафедра ПЗ
ЗВІТ
До лабораторної роботи № 6
На тему: “ Комбінаторика ”
З дисципліни : " Дискретна математика"
Лектор:
Сердюк П.В.
Львів – 2007
Завдання:
Задане додатне ціле число n. Розташувати у лексикографічному порядку всі перестановки множини {1,2,…,n}.
Побудувати розклад (x+y)5
Відлагодити, скомпілювати і зберегти програму.
Оформити звіт про роботу.
Текст програми
Завдання 1.
Program lab6_1;
var a:array[1..40] of integer;
n,r,i,j,z:integer;
Procedure Vvid_r;
Begin
Write('Vvedit r:');
Readln(r);
if (r<0)or(r>n) then begin writeln('ymova',r,'<=',n,' ne vykonuetsya'); vvid_r; end;
End;
Procedure Vvid_n;
Begin
Write('Vvedit n:');
Readln(n);
if n>0 then vvid_r
else begin writeln('Vvedit inshe n'); vvid_n;end;
End;
Begin
vvid_n;
for i:=1 to r do
begin a[i]:=i; write(a[i]);end;
writeln;
while i>=1 do
begin
if i=0 then break;
while (a[i]=n-r+i) do begin dec(i);if i=0 then halt;end;
a[i]:=a[i]+1;j:=i;
while j<r do begin inc(j);a[j]:=a[i]+j-i;end;
for z:=1 to r do Write(a[z]);writeln;
end;
readln;
End.
Завдання 2.
Program l6_2;
uses crt;
var k,n,C,i,z,x:integer;
zn:char;
Function koef(var m,n:integer):integer;
var c,fctn,fctm,fctn_m,i,j:longint;{fct-factorial}
Begin
fctn:=1;fctm:=1;fctn_m:=1;
For i:=1 to n do
fctn:=fctn*i;
For i:=1 to m do
fctm:=fctm*i;
j:=n-m;
For i:= 1 to j do
fctn_m:=fctn_m*i;
c:=fctn div(fctm*fctn_m);
koef:=c;
End;
Begin
clrscr;
writeln;
write('Vvedit n:');
readln(n);z:=-1;
write('(x-y)',n,' = ');
For k:= 0 to n do
begin
C:=koef(k,n);
z:=z*-1;
if z = 1 then zn:='+' else zn:='-';
if x=0 then begin write ('x',n);x:=1;continue;end;
if k=n then write(zn,'y',k)
else
begin
if C=1 then write(zn,'x',n-k,'y',k);
if k=n then write('y',k)
else write(zn,C,'x',n-k,'y',k);
end;
end;
readln;
End.
Висновок:
На цій лабораторній роботі я навчився програмувати комбінаторні формули в середовищі Turbo Pascal.