0 bình luận về “viết chương trình rút gọn phân số”
uses crt; var x, y, u: longint; x1, y1: real; function UC(a, b: longint): longint; var sd: longint; begin while (b<>0) do begin sd:=a mod b; a:=b; b:=sd; end; UC:=a; end; begin clrscr; write (‘nhap tu so: ‘); readln (x); write (‘nhap mau so: ‘); readln (y); u:=UC(x,y); if u=1 then writeln (‘phan so da toi gian’); if u<>1 then begin x1:=x/u; y1:=y/u; writeln (‘tu so sau khi rut gon la: ‘,x1:1:2); writeln (‘mau so sau khi rut gon la: ‘,y1:1:2); end; readln; end.
Bài này nhiều điểm nên mình làm 2 cách nhá, bạn thấy cách nào phù hợp thì tham khảo nha. Nó đều là tìm ước chung lớn nhất.
#Xin hay nhất
C1:
uses crt; var a,b,i:longint; begin clrscr; write(‘Tu so: ‘);readln(a); write(‘Mau so: ‘);readln(b); i:=a; while(a mod i<>0)or(b mod i<>0)do dec(i); writeln(a div i,’/’,b div i); readln end.
C2:
uses crt; var a,b,c,d:longint; begin clrscr; write(‘Tu so: ‘);readln(a); write(‘Mau so: ‘);readln(b); c:=a; d:=b; while c<>d do if c>d then c:=c-d else d:=d-c; writeln(a div c,’/’,b div d); readln end.
uses crt;
var x, y, u: longint;
x1, y1: real;
function UC(a, b: longint): longint;
var sd: longint;
begin
while (b<>0) do
begin
sd:=a mod b;
a:=b;
b:=sd;
end;
UC:=a;
end;
begin
clrscr;
write (‘nhap tu so: ‘); readln (x);
write (‘nhap mau so: ‘); readln (y);
u:=UC(x,y);
if u=1 then
writeln (‘phan so da toi gian’);
if u<>1 then
begin
x1:=x/u;
y1:=y/u;
writeln (‘tu so sau khi rut gon la: ‘,x1:1:2);
writeln (‘mau so sau khi rut gon la: ‘,y1:1:2);
end;
readln;
end.
Bài này nhiều điểm nên mình làm 2 cách nhá, bạn thấy cách nào phù hợp thì tham khảo nha. Nó đều là tìm ước chung lớn nhất.
#Xin hay nhất
C1:
uses crt;
var a,b,i:longint;
begin
clrscr;
write(‘Tu so: ‘);readln(a);
write(‘Mau so: ‘);readln(b);
i:=a;
while(a mod i<>0)or(b mod i<>0)do dec(i);
writeln(a div i,’/’,b div i);
readln
end.
C2:
uses crt;
var a,b,c,d:longint;
begin
clrscr;
write(‘Tu so: ‘);readln(a);
write(‘Mau so: ‘);readln(b);
c:=a; d:=b;
while c<>d do if c>d then c:=c-d else d:=d-c;
writeln(a div c,’/’,b div d);
readln
end.