Bài 1. Số hexa (năm 11-12)
Trong toán học, lâu nay Bờm chỉ biết
đến số thập phân. Hôm nay, tình cờ Bờm đọc được
tài liệu nói về số hexa. Số hexa là số được tạo
thành bởi các chữsố (0 →9) và các chữcái (A →F).
Muốn chuyển đổi một số nguyên K (K ≥ 0) từ hệ thập
phân sang hệ hexa Bờm làm nhưsau: Bờm lấy số K chia
cho 16 được thương là P, rồi lấy thương P chia cho
16. Cứ lặp lại như vậy cho đến khi nào thương bằng 0
thì dừng, sau đó viết liên tiếp phần dư từ dưới
lên thì Bờm thu được số hexa:
Yêu cầu: Cho
dãy số nguyên ở hệ thập phân. Hãy giúp Bờm chuyển
dãy số trên thành dãy số tương ứng ở hệ hexa.
Dữ liệu vào: Từ
file BAI1.INP gồm:
- Dòng 1: Sốnguyên dương n (n ≤103).
- Dòng 2…n+1: Mỗi dòng chứa một sốnguyên K (0 ≤ K ≤ 109).
- Dòng 1: Sốnguyên dương n (n ≤103).
- Dòng 2…n+1: Mỗi dòng chứa một sốnguyên K (0 ≤ K ≤ 109).
Kết quả: Ghi
ra file BAI1.OUT gồm: n dòng là n số hexa tương ứng.
uses
crt;
var
n,i,k:longint;
S:string;
f2,f1:text;
function
chcs16(M:longint):string;
Var
du:longint;
He16,T:String;
Begin
He16:='
';
Repeat
du:=M
Mod 16;
If
du < 10 Then
Str(du,
T)
Else
T:=Chr(du+55);
He16:=T
+ He16;
M:=
M Div 16;
Until
M = 0;
chcs16:=he16;
End;
{------------------------------------------------------------}
BEGIN
assign(f1,'hecoso10.out');reset(f1);
readln(f1,n);
assign(f2,'hecoso16.out');rewrite(f2);
for
i:=1 to n do
begin
readln(f1,k);
writeln(f2,chcs16(k));
end;
close(f2);
close(f1);
END.
Bài
2.
Từ hệ cơ số 10 sang hệ cơ số 2 làm tưong tự. Thay vì
chia cho 16 ta chia cho 2.
program
chuyen_cs_10_2;
uses
crt;
var
i,j,m,N:integer;
S:string;
f1,f2:text;
function
nhiphan(n:longint):string;
var
s,so,du:integer;
St,St1:string;
begin
s:=0;so:=n;
St:='';St1:='';
while
(so >0) do
begin
du:=so
mod 2;
so:=so
div 2;
if
du=1 then St:=St+'1' else St:=St+'0';
end;
for
i:=length(St) downto 1 do St1:=St1+St[i];
nhiphan:=St1;
end;
{----------------------------------}
BEGIN
assign(f1,'hecoso10.inp');reset(f1);
assign(f2,'hecoso2.out');rewrite(f2);
readln(f1,N);
for
j:=1 to N do
begin
readln(f1,m);
S:=nhiphan(m);
writeln(f2,S);
end;
close(f1);close(f2);
END.
Bài
3.
Chuyển từ hệ cơ số 2 sang hệ cơ số 10.
uses
crt;
var
x,i,j,a,n:longint;
m:array[1..100000]
of longint;
S:string;
f1,f2:text;
function
luythua(n,x:longint):longint;
var
m,i:longint;
begin
m:=1;
for
i:=1 to n do m:=m*x;
luythua:=m;
end;
{===================================================================}
BEGIN
assign(f1,'hecoso2.out');reset(f1);
assign(f2,'hecoso10.out');rewrite(f2);
readln(f1,n);
for
i:=1 to n do
begin
readln(f1,S);
n:=0;a:=length(S);
for
j:=1 to length(S) do
begin
if
(S[j]='1') or (S[j]='0') then val(S[j],m[j]);
n:=n+luythua(a-1,2)*m[j];
dec(a);
end;
writeln(f2,n);
end;
close(f1);close(f2);
END.
Câu
4.
Hệ cơ số 16 sang 10 tương tự
uses
crt;
var
x,i,a,n:longint;
S:string;
f1,f2:text;
FUNCTION
luythua(n,x:longint):longint;
var
m,i:longint;
begin
m:=1;
for
i:=1 to n do m:=m*x;
luythua:=m;
end;
{======================================================}
FUNCTION
he10(S:string):longint;
var
n,i,m,a:longint;
k:array[1..1000]
of longint;
begin
n:=0;a:=length(S);
i:=1;
for
i:=1 to length(S) do
begin
if
S[i] in ['0'..'9'] then val(S[i],k[i])
else
begin
if
S[i]= 'A' then k[i]:=10;
if
S[i]= 'B' then k[i]:=11;
if
S[i]= 'C' then k[i]:=12;
if
S[i]= 'D' then k[i]:=13;
if
S[i]= 'E' then k[i]:=14;
if
S[i]= 'F' then k[i]:=15;
end;
n:=n+luythua(a-1,16)*k[i];
dec(a);
end;
he10:=n;
end;
{-----------------------------------------------}
BEGIN
assign(f1,'hecoso16.inp');reset(f1);
assign(f2,'hecoso10.out');rewrite(f2);
readln(f1,n);
for
i:=1 to n do
begin
readln(f1,S);
writeln(f2,he10(S));
end;
close(f1);close(f2);
END.
Sign up here with your email
ConversionConversion EmoticonEmoticon