Привет, всем! Условие следующее: есть массив чисел, заданных в шестнадцатеричной системе счисления. Числа читаются из текстового файла. Необходимо упорядочить этот массив по неубыванию, не переводя числа в другую С.С.
Собственно вопрос: как реализовать сравнение двух чисел, заданных в шестнацатеричной С.С.
Сорри, а какая разница, КАК ты описываешь числа? Если ты напишешь: A := $12, а потом сделаешь WriteLn(A), что получишь на экране? Однако, заметь, ты ж не переводил число в другую с/с ...
что то я не пойму, как мне это может помочь?
По условию, числа записаны в файле следующим образом: по одному числу в строке, цифры разделены пробелами.
Покажи, как ты читаешь числа из файла (а самое главное - КУДА? В массив строк или все-таки в массив чисел?)
хмм..
то есть ты считаешь, что
var s1,s2: string;
begin
s1:='F';
s2:='1AAF';
if s1>s2 then
writeln(s1,'>',s2)
else
writeln(s2,'>',s1);
readln;
end.
var
f:text;
mas:array[1..100,1..100] of integer;
kol:integer;
procedure write_file;
var
ch:char;
i:integer;
begin
Assign(f,'data.txt');
Reset(f);
for i:=1 to 100 do
for kol:=1 to 100 do
mas[i,kol]:=-1;
i:=1;
kol:=0;
while not EOF(f) do
begin
read(f,ch);
case ch of
'0':begin mas[kol+1,i]:=0; inc(i); end;
'1':begin mas[kol+1,i]:=1; inc(i); end;
'2':begin mas[kol+1,i]:=2; inc(i); end;
'3':begin mas[kol+1,i]:=3; inc(i); end;
'4':begin mas[kol+1,i]:=4; inc(i); end;
'5':begin mas[kol+1,i]:=5; inc(i); end;
'6':begin mas[kol+1,i]:=6; inc(i); end;
'7':begin mas[kol+1,i]:=7; inc(i); end;
'8':begin mas[kol+1,i]:=8; inc(i); end;
'9':begin mas[kol+1,i]:=9; inc(i); end;
'A':begin mas[kol+1,i]:=10; inc(i); end;
'B':begin mas[kol+1,i]:=11; inc(i); end;
'C':begin mas[kol+1,i]:=12; inc(i); end;
'D':begin mas[kol+1,i]:=13; inc(i); end;
'E':begin mas[kol+1,i]:=14; inc(i); end;
'F':begin mas[kol+1,i]:=15; inc(i); end;
#13: begin inc(kol); i:=1; end;
end;
end;
Close(f);
end;
вот, наваял... читаю строки из файла в массив строк, дополняю их фиктивными нулями, сортирую, убираю фиктивные нули и делаю вывод... вроде работает...
program sistem;
uses crt;
var
f:text;
mas:array[1..100] of string;
kol:integer;
procedure write_file;
var
ch:char;
i:integer;
begin
Assign(f,'data.txt');
Reset(f);
i:=1;
kol:=1;
while not EOF(f) do
begin
read(f,ch);
if (ch=#13) then
inc(kol)
else
if (ch<>' ')and(ch<>#10) then
mas[kol]:=mas[kol]+ch;
end;
Close(f);
end;
procedure dopoln;
var
i,max:integer;
begin
max:=length(mas[1]);
for i:=2 to kol do
if (max<length(mas[i])) then
max:=length(mas[i]);
for i:=1 to kol do
while (length(mas[i])<max) do
mas[i]:='0'+mas[i];
end;
procedure sort;
var
st:string;
i,k:integer;
begin
for k:=1 to kol-1 do
for i:=1 to kol-k do
if(mas[i]>mas[i+1]) then
begin
st:=mas[i];
mas[i]:=mas[i+1];
mas[i+1]:=st;
end;
end;
procedure del;
var
i:integer;
begin
for i:=1 to kol do
while (mas[i,1]='0') do
delete(mas[i],1,1);
end;
procedure print;
var
i:integer;
begin
for i:=1 to kol do
writeln(mas[i]);
end;
begin
clrscr;
write_file;
dopoln;
sort;
del;
print;
readkey;
end.
while length (s1)<length (s2) do s1:='0'+s1;
while length (s2)<length (s1) do s2:='0'+s2;
так и сделал