[Tin 11] Lập trình

Q

quanghero100

Mã:
uses crt;
var a,b,c,d:integer;
procedure nhap;
begin
 writeln('nhap phan so thu nhat');
 write('tu so: '); readln(a);
 write('mau so: '); readln(b);
 writeln('nhap phan so thu hai');
 write('tu so: '); readln(c);
 write('mau so: '); readln(d);
end;
begin  
    nhap; 
       mc:=b*d; 
       Tutong:=a*d+b*c;
        Tuhieu:=a*d-b*c; 
         write('tong=',tutong,'/',mc);

         write('hieu=',tuhieu,'/',mc);
           readln;
end.

Em nghĩ anh đã làm ra thế thì phải thêm một procedure rút gọn nữa để kết quả cuối cùng là những phân số tối giản như zậy kết quả sẽ đẹp hơn :D:D
 
Q

quanghero100

bổ sung thêm chương trình con rút gọn nè:D:D:D
Mã:
procedure rutgon(a,b:integer);
var i:integer;
 begin
   i:=a;
   repeat
     if (a mod i=0) and (b mod i=0) then
        begin
         a:=a div i;
         b:=b div i;
         i:=a;
        end
     else i:=i-1;
    until i=1;
  end;
 
L

love_minh95

hoặc dùng cái này để rút gọn nhanh hơn

Mã:
function  ucln(a,b:int64):int64;
begin
        if  b=0 then  exit(a)
        else  exit(ucln(b,a mod b));
end;
begin
            tg:=ucln(a,b);
             write(a div tg,'/',b div tg);
end.
:D
 
Last edited by a moderator:
Top Bottom