26.6.. Napisati program koji omogućuje pretvaranje decimalnih brojeva u heksadecimalne i obratno.
Opis rješenja:
Primjer pretvaranja decimalnog broja 435210 u heksadecimalni broj 110016.
4352 : 16 = 272
X(1) = 0 ostatak
272 : 16 = 17
X(2) = 0 ostatak
17 : 16 = 1 435210 = 110016
X(3) = 1 ostatak
1 : 16 = 0
X(4) = 1 ostatak
text
110016 = 1 * 163 + 1 * 162 + 0 * 161 + 0 * 160 =
= 1 * 4096 + 1 * 256 + 0 * 16 + 0 * 1 = 435210
Opis programa: Heksadecimalni brojevi se često koriste u računarskoj tehnici. Preračunavanje iz heksadecimalne u decimalne brojeve je zamoran posao. Ovaj program olakšava proračunavanje.
Poslije startanja programa na ekranu se ispisuje: Program omogućuje da biramo način pretvaranja:
- Heksadecimalni u decimalni broj
- Decimalni u heksadecimalni broj
- Kraj
Izaberemo pretvaranje koje želimo. Primjer pretvaranja decimalnog broja 435210 u heksadecimalni broj 110016.
text
4352 : 16 = 272
X(1) = 0 ostatak
272 : 16 = 17
X(2) = 0 ostatak
17 : 16 = 1 435210 = 110016
X(3) = 1 ostatak
1 : 16 = 0
X(4) = 1 ostatak
text
110016 = 1 * 163 + 1 * 162 + 0 * 161 + 0 * 160 =
= 1 * 4096 + 1 * 256 + 0 * 16 + 0 * 1 = 435210
Ispis na ekranu:
Učitati heksadecimalni broj: FAO
Heksadecimalni broj FAO
Decimalni ekvivalent 4000
Hoćeš li novi broj: N
II izvođenje
Učitati decimalni broj: 2748
Decimalni broj = 2748
Heksadecimalni ekvivalent = ABC
Hoćeš li novi broj: N
Spisak varijabli:
A - pomoćna varijabla
BR - broj cifara heksadecimalnog broja
CI$ - cifra heksadecimalnog broja
D - pomoćna varijabla
DB - decimalni broj
HX$ - heksadecimalni broj
I - pomoćna varijabla
SEM - kontrolna varijabla
X - cifra heksadecimalnog broja (decimalni zapis)
PROGRAM HexDecKonverter;
USES
WinCrt;
type
TCifreNiz = array[1..50] of Char;
var
X: TCifreNiz;
IZ, DB: Integer;
HX, DA: string;
SEM: Boolean;
procedure Menu;
begin
ClrScr;
Writeln(Tab(10), 'I Z B O R');
Writeln;
Writeln;
Writeln('1. Heksadecimalni u decimalni broj');
Writeln('2. Decimalni u heksadecimalni broj');
Writeln('3. Kraj');
Writeln; Writeln; Writeln;
Write(Tab(20), 'Vas izbor: ');
Readln(IZ);
end;
procedure ProvjeraHeksa(HX: string; var HB: string; var Znak: Integer; var SEM: Boolean);
var
I: Integer;
C: Char;
begin
SEM := False;
Znak := 1;
HB := HX;
if HX[1] = '-' then
begin
Znak := -1;
HB := Copy(HX, 2, Length(HX) - 1);
end;
for I := 1 to Length(HB) do
begin
C := UpCase(HB[I]);
if not ((C >= '0') and (C <= '9') or (C >= 'A') and (C <= 'F')) then
begin
SEM := True;
Writeln('Greska: Neispravan heksadecimalni broj!');
Break;
end;
end;
end;
function HeksaUDecimalni(HB: string; Znak: Integer): Integer;
var
I, V, Rezultat: Integer;
C: Char;
begin
Rezultat := 0;
for I := 1 to Length(HB) do
begin
C := UpCase(HB[I]);
if (C >= '0') and (C <= '9') then
V := Ord(C) - Ord('0')
else
V := Ord(C) - Ord('A') + 10;
Rezultat := Rezultat * 16 + V;
end;
HeksaUDecimalni := Rezultat * Znak;
end;
procedure HeksUDec;
var
HX, HB: string;
Znak: Integer;
begin
repeat
Write('Ucitati heksadecimalni broj: ');
Readln(HX);
ProvjeraHeksa(HX, HB, Znak, SEM);
if SEM then
Continue;
DB := HeksaUDecimalni(HB, Znak);
Writeln('Heksadecimalni broj ', HX);
Writeln('Decimalni ekvivalent ', DB);
Write('Hoces li novi broj? ');
Readln(DA);
until (UpCase(DA[1]) = 'N');
end;
function DecUHeksa(DB: Integer): string;
var
Temp, Ostatak: Integer;
Rezultat, ZnakStr: string;
C: Char;
begin
Rezultat := '';
Temp := DB;
if Temp = 0 then
begin
DecUHeksa := '0';
Exit;
end;
ZnakStr := '';
if DB < 0 then
begin
ZnakStr := '-';
Temp := -DB;
end;
while Temp > 0 do
begin
Ostatak := Temp mod 16;
if Ostatak < 10 then
C := Chr(Ostatak + 48)
else
C := Chr(Ostatak + 55);
Rezultat := C + Rezultat;
Temp := Temp div 16;
end;
DecUHeksa := ZnakStr + Rezultat;
end;
procedure DecUHex;
begin
repeat
Write('Ucitati decimalni broj: ');
Readln(DB);
HX := DecUHeksa(DB);
Writeln('Decimalni broj ', DB);
Writeln('Heksadecimalni ekvivalent ', HX);
Write('Hoces li novi broj? ');
Readln(DA);
until (UpCase(DA[1]) = 'N');
end;
begin
repeat
Menu;
case IZ of
1: HeksUDec;
2: DecUHex;
3: begin
Writeln('Kraj programa');
Break;
end;
else
Writeln('Nepoznat izbor!');
end;
until IZ = 3;
READLN;
END.
Izvođenje programa:

Index
|