type entier=longint;
fraction=record num,den:entier end;
function pgcd(a,b:entier):entier;
var c:entier;
begin
while ( b>0) do begin a:=a mod ( b); c:=a; a:=b; b:=c; end;
pgcd:=b;
end; / /pgcd
procedure reduit_frac(var a:fraction);
var p:entier;
begin
p:=pgcd(a.num,a.den);
a.num:=a.num div p;
a.den:=a.den div p;
end; / /reduction de fractions
procedure lire_frac(var a:fraction);
begin
readln(a.num,a.den);
reduit_frac(a)
end;
procedure ecrire_frac(a:fraction);
begin
writeln(a.num,´/´,a.den);
end; / /écrit la fraction
procedure addition_frac(a,b:fraction;var c:fraction); / / c:=a+b
var p:entier;
begin
p:=pgcd(a.den,b.den);
a.den:=a.den*p;
b.den:=b.den*p;
a.num:=a.num*p;
b.num:=b.num*p;
c.num:=a.num+b.num;
c.den:=a.den;
end;
procedure soustraction_frac(a,b:fraction;var c:fraction); / / c:=a+b
var p:entier;
begin
p:=pgcd(a.den,b.den);
a.den:=a.den*p;
b.den:=b.den*p;
a.num:=a.num*p;
b.num:=b.num*p;
c.num:=a.num-b.num;
c.den:=a.den;
end;
var x,y,z:fraction;
begin
write(´Donnez deux fractions : ´);
lire_frac(x);
lire_frac(y);
addition_frac(x,y,z); reduit_frac(z);
ecrire_frac(x); write(´+´); ecrire_frac(y); write(´=´); ecrire_frac(z); writeln;
soustraction_frac(x,y,z); reduit_frac(z);
ecrire_frac(x); write(´-´); ecrire_frac(y); write(´=´); ecrire_frac(z); writeln;
readln;
end.
désolé de poster ça ici, mais je suis en cours et je n´ai pas de disquette pr sauvegarder... ^^ 