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.