IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Как сравнить два шестнацатеричных числа?
samec
сообщение 19.06.2007 22:01
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 180
Пол: Мужской
Реальное имя: Юра

Репутация: -  1  +


Привет, всем! Условие следующее: есть массив чисел, заданных в шестнадцатеричной системе счисления. Числа читаются из текстового файла. Необходимо упорядочить этот массив по неубыванию, не переводя числа в другую С.С.
Собственно вопрос: как реализовать сравнение двух чисел, заданных в шестнацатеричной С.С.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
samec
сообщение 20.06.2007 6:04
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 180
Пол: Мужской
Реальное имя: Юра

Репутация: -  1  +


вот, наваял... читаю строки из файла в массив строк, дополняю их фиктивными нулями, сортирую, убираю фиктивные нули и делаю вывод... вроде работает...


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.



Сообщение отредактировано: samec - 20.06.2007 6:04
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.07.2025 4:09
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"