program ulamki; uses Crt; var l1, m1, l2, m2, lr, mr, lil, mil, li, mi, l,m : integer; procedure dane (var l1, m1:integer; nr:byte); begin write('Podaj licznik ',nr,' ulamka: '); readln(l1); write('Podaj mianownik ',nr,' ulamka: '); readln(m1); end; function nwd(l1,m1:byte):byte; var r:integer; begin if l1<>m1 then begin if l1>m1 then begin repeat r:=l1 mod m1; l1:=m1; m1:=r; nwd:=l1; until m1=0; end else begin repeat r:=m1 mod l1; m1:=l1; l1:=r; nwd:=m1; until l1=0; end; end else nwd:=l1; end; procedure suma (l1, m1, l2, m2 : integer; var l, m :integer); var n:integer; begin l:=l1*m2+l2*m1; m:=m1*m2; n:=nwd(l,m); l:=l div n; m:=m div n; end; procedure roznica (l1, m1, l2, m2 : integer; var lr, mr :integer); var n:integer; begin lr:=l1*m2-l2*m1; mr:=m1*m2; n:=nwd(lr,mr); lr:=lr div n; mr:=mr div n; end; procedure iloczyn (l1, m1, l2, m2 : integer; var li, mi :integer); var n:integer; begin li:=l1*l2; mi:=m1*m2; n:=nwd(li,mi); li:=li div n; mi:=mi div n; end; procedure iloraz (l1, m1, l2, m2 : integer; var lil, mil :integer); var n:integer; begin lil:=l1*m2; mil:=l2*m1; n:=nwd(lil,mil); lil:=lil div n; mil:=mil div n; end; procedure wypisz (l, m, lr, mr, li, mi, lil, mil :integer); begin writeln('Suma wynosi ',l,'/',m); writeln('Roznica wynosi ',lr,'/',mr); writeln('Iloczyn wynosi ',li,'/',mi); writeln('Iloraz wynosi ',lil,'/',mil); end; begin ClrScr; dane(l1,m1,1); dane(l2,m2,2); suma(l1,m1,l2,m2,l,m); roznica(l1,m1,l2,m2,lr,mr); iloczyn(l1,m1,l2,m2,li,mi); iloraz(l1,m1,l2,m2,lil,mil); wypisz(l,m,lr,mr,li,mi,lil,mil); readkey; end.