www.pudn.com > CHANGE1.rar > CHANGE1.PAS


program change; 
var intzi,unloopzi,zi,mu,temp:longint; 
    looplen,unlooplen:byte; 
    str:string; 
    flag:boolean; 
 
function divisor(m,n:longint):longint; 
  var a,b,t:longint; 
  begin 
    a:=m;b:=n; 
    repeat 
      if a0 then delete(str,pos(')',str)+1,length(str)-pos(')',str)) 
                         else str:=str+')'; 
      end; 
    t:=pos('.',str); 
    val(copy(str,1,t-1),intzi,ok); 
    delete(str,1,t); 
    t:=pos('(',str);unlooplen:=t-1; 
    val(copy(str,1,t-1),unloopzi,ok); 
    delete(str,1,t); 
    t:=length(str); 
    looplen:=t-1; 
    delete(str,t,1); 
    val(str,zi,ok); 
    str:=''; 
    for i:=1 to looplen do str:=str+'9'; 
    val(str,mu,ok);unloopzi:=unloopzi*mu; 
    for i:=1 to unlooplen do str:=str+'0'; 
    val(str,mu,ok);intzi:=intzi*mu; 
    zi:=zi+intzi+unloopzi; 
    temp:=divisor(zi,mu); 
    zi:=zi div temp; 
    mu:=mu div temp; 
    writeln(zi,'/',mu); 
    end; 
 
procedure judge; 
  var strt:string; 
  begin 
    flag:=false; 
    strt:=str; 
    delete(strt,pos('.',strt),1); 
    delete(strt,pos('(',strt),1); 
    delete(strt,pos(')',strt),1); 
    if (pos('.',strt)<>0) or (pos('(',strt)<>0) or (pos(')',strt)<>0) then flag:=true; 
    end; 
 
begin 
  writeln('Please input a number with using brackets to show where the loops is:'); 
  readln(str); 
  judge; 
  if ((pos('.',str)=0) and ((pos('(',str)<>0) or (pos(')',str)<>0))) 
  or ((pos('(',str)=0) and (pos(')',str)<>0)) 
  or flag 
  then writeln('Are you kidding me?') 
  else if pos('.',str)=0 
       then writeln('foolish ',str) 
       else if pos('(',str)=0 
            then main1 
            else main2; 
  readln; 
  end.