主题:FP求助!!!!!!!!!!!!!!
hulubin
[专家分:0] 发布于 2006-07-20 15:45:00
Free pascal:文本文件T.TXT中第一行是一个十进制数N,接着N行每行有一个二进制数,将每一个二进制数转换成十六进制数并输出到屏幕,每行输出一个。
沙发
贺天行宝 [专家分:2300] 发布于 2006-07-20 20:23:00
我有个功能强大的程序!
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
也可能是
原进制数〈原进制〉目标进制
对不起,即不清楚了!