program ulamki; uses Crt; type ul=record mianownik:integer; licznik:integer; end; var ulamek1, ulamek2, roznica, iloraz, iloczyn, suma : ul; procedure dane (var ulamek1:ul; nr:byte); begin write('Podaj licznik ',nr,' ulamka: '); readln(ulamek1.licznik); write('Podaj mianownik ',nr,' ulamka: '); readln(ulamek1.mianownik); end; function nwd(ulamek1:ul):byte; var r:integer; begin if ulamek1.licznik<>ulamek1.mianownik then begin if ulamek1.licznik>ulamek1.mianownik then begin repeat r:=ulamek1.licznik mod ulamek1.mianownik; ulamek1.licznik:=ulamek1.mianownik; ulamek1.mianownik:=r; nwd:=ulamek1.licznik; until ulamek1.mianownik=0; end else begin repeat r:=ulamek1.mianownik mod ulamek1.licznik; ulamek1.mianownik:=ulamek1.licznik; ulamek1.licznik:=r; nwd:=ulamek1.mianownik; until ulamek1.licznik=0; end; end else nwd:=ulamek1.licznik; end; procedure sumaul (ulamek1, ulamek2: ul; var suma:ul); var n:integer; begin suma.licznik:=ulamek1.licznik*ulamek2.mianownik+ulamek2.licznik*ulamek1.mianownik; suma.mianownik:=ulamek1.mianownik*ulamek2.mianownik; n:=nwd(suma); suma.licznik:=suma.licznik div n; suma.mianownik:=suma.mianownik div n; end; procedure roznicaul (ulamek1, ulamek2: ul; var roznica :ul); var n:integer; begin roznica.licznik:=ulamek1.licznik*ulamek2.mianownik-ulamek2.licznik*ulamek1.mianownik; roznica.mianownik:=ulamek1.mianownik*ulamek2.mianownik; n:=nwd(roznica); roznica.licznik:=roznica.licznik div n; roznica.mianownik:=roznica.mianownik div n; end; procedure iloczynul (ulamek1,ulamek2: ul; var iloczyn:ul); var n:integer; begin iloczyn.licznik:=ulamek1.licznik*ulamek2.licznik; iloczyn.mianownik:=ulamek1.mianownik*ulamek2.mianownik; n:=nwd(iloczyn); iloczyn.licznik:=iloczyn.licznik div n; iloczyn.mianownik:=iloczyn.mianownik div n; end; procedure ilorazul (ulamek1,ulamek2: ul; var iloraz:ul); var n:integer; begin iloraz.licznik:=ulamek1.licznik*ulamek2.mianownik; iloraz.mianownik:=ulamek2.licznik*ulamek1.mianownik; n:=nwd(iloraz); iloraz.licznik:=iloraz.licznik div n; iloraz.mianownik:=iloraz.mianownik div n; end; procedure wypisz (suma,roznica,iloczyn,iloraz :ul); begin writeln('Suma wynosi ',suma.licznik,'/',suma.mianownik); writeln('Roznica wynosi ',roznica.licznik,'/',roznica.mianownik); writeln('Iloczyn wynosi ',iloczyn.licznik,'/',iloczyn.mianownik); writeln('Iloraz wynosi ',iloraz.licznik,'/',iloraz.mianownik); end; begin ClrScr; dane(ulamek1,1); dane(ulamek2,2); sumaul(ulamek1,ulamek2,suma); roznicaul(ulamek1,ulamek2,roznica); iloczynul(ulamek1,ulamek2,iloczyn); ilorazul(ulamek1,ulamek2,iloraz); wypisz(suma,roznica,iloczyn,iloraz); readkey; end.