viết chương trình nhập vào từ bàn phím 4 số nguyên a,b,c,d khác 0 xuất ra màn hình là m/n với phân số m/n là phân số tối giản của phép cộng a/b+c/d

2 câu trả lời

Const Fi='CONGPHANSO.INP';
      Fo='CONGPHANSO.OUT';
Var f,g: text;
    a,b,c,d,mau,tu,ps: int64;

Function UCLN(a,b: longint): longint;
Begin
        While a<>b do
        Begin
                If a>b then a:=a-b
                Else
                If b>a then b:=b-a;
        End;
        UCLN:=a;
End;

Begin
        Assign(f,Fi); Reset(f);
        Assign(g,Fo); Rewrite(g);

        Read(f,a,b,c,d);

        If (b=0) or (d=0) then Write(g,'Mau bang 0')
        Else
        Begin
                Writeln(g,'Hai phan so vua nhap la: ',a,'/',b,' , ',c,'/',d);

                If b=d then Writeln(g,'Tong hai phan so la: ',a+c,'/',b)
                Else
                Begin
                        tu:=a*d+b*c;
                        mau:=b*d;
                        Writeln(g,'Tong hai phan so la: ',tu,'/',mau);
                End;

                ps:=UCLN(tu,mau);
                tu:=tu div UCLN(tu,mau);
                mau:=mau div ps;
                Writeln(g,'TỔNG PHÂN SỐ RÚT GỌN : ',tu,'/',mau);
        End;
        Close(f);
        Close(g);
End.

cho mình câu trả lời hay nhất nhé !!!

uses crt;
var a,b,c,d,tu,mau:longint;
        function uoc(m,n:longint):longint;
        var r:longint;
        begin
                r:=0;
                while n<>0 do
                        begin
                                r:=m mod n;
                                m:=n;
                                n:=r;
                        end;
                uoc:=m;
        end;
begin
        read(a,b,c,d);
        if (a=0) or (b=0) or (c=0) or (d=0) then exit
        else begin
                tu:=(a*d+b*c) div uoc((a*d+b*c),b*d);
                mau:=(b*d) div uoc((a*d+b*c),b*d);
        end;
        write(tu,'/',mau);
        readln; readln;
end.