Lập chương trình đổi một số thập phân hữu hạn hoặc một số thập phân vô hạn tuần hoàn ra phân sô tối giản
Giải
Var
i,j,a,b,c,d,e:integer;
s,s1,s2,s3: String;
hh,vh: boolean;
tu,mau,t,m,t1,t2,m1,m2: longint;
BEGIN
hh:=true; vh:=false;m1:=1; m2:=1;tu:=1;mau:=1;
Write('Nhap so thap phan: '); Readln(s);
For i:=1 to length(s) do
if s[i]='(' then
if s[i-1] ='.' then vh :=true;
if vh then hh:=false;
a:=0;b:=0;
Repeat
inc(a);
Until s[a] ='(';
repeat
inc(b);
Until s[b]='.';
If vh Then
begin
d:=length(s)-a-1; s1:= copy(s,1,b-1); s2:=copy(s,b+1,a-b-1);
s1:=s1+s2; Val(s1,t1,e); s3:= copy(s,a+1,d); Val(s3,t2,e);
for i:=1 to d do m1:=m1*10;
m1:=m1-1;
for i:=1 to a-b-1 do m2:=m2*10;
tu:=t1*m1+t2; mau:=m1*m2;
end;
If hh Then
begin
s1:=copy(s,1,b-1); s2:=copy(s,b+1,length(s)-b); s1:=s1+s2; Val(s1,tu,e);
for i:=b+1 to length(s) do mau:=mau*10;
end;
Write(s,' = ',tu,'/',mau); t:=tu; m:=mau;
repeat
if tu>mau then tu:=tu-mau
else mau:=mau-tu;
until tu=mau;
t:=t div tu; m:=m div mau;
Writeln(' = ',t,'/',m);
readln;
END.
No comments:
Post a Comment
Cảm ơn bạn đã nhận xét