回 帖 发 新 帖 刷新版面

主题:FP求助!!!!!!!!!!!!!!

Free pascal:文本文件T.TXT中第一行是一个十进制数N,接着N行每行有一个二进制数,将每一个二进制数转换成十六进制数并输出到屏幕,每行输出一个。

回复列表 (共2个回复)

沙发

我有个功能强大的程序!
const
  six:array['A'..'F']of integer=(10,11,12,13,14,15);
  ss:array[0..15]of char=('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
var
  s,a,olds:string;
  ans:array[1..100]of char;
  k,l,m,n,o,news,temp,kk,ll,tempm:longint;
  i,j:integer;
{olds:the old number;o:old number's kk;temp:new number's kk
m:old number of ten}
begin
  readln(kk);
  for ll:=1 to kk do
  begin
  readln(s);
  k:=pos('<',s);dec(k);
  olds:=copy(s,1,k);
  l:=pos('>',s);
  a:=copy(s,k+2,l-k-2);
  delete(s,1,l);
  val(s,temp,i);
  val(a,o,i);
  i:=1;m:=0;
  for j:=length(olds) downto 1 do
    begin
      if (olds[j]>='A')and(olds[j]<='F') then l:=six[olds[j]] else l:=ord(olds[j])-48;
      inc(m,l*i);
      i:=i*o;
    end;
  i:=0;
  while m<>0 do
    begin
      inc(i);
      ans[i]:=ss[m mod temp];
      m:=m div temp;
    end;
  write(olds,'<',o,'>=');for j:=i downto 1 do write(ans[j]);write('<',temp,'>');
  writeln;
  end;
end.
读入是:原进制数〈目标进制〉原进制
比如11<10>2
出来是3
也可能是
原进制数〈原进制〉目标进制
对不起,即不清楚了!

板凳

怎么不可以?

我来回复

您尚未登录,请登录后再回复。点此登录或注册