Показать сообщение отдельно
Старый 25.11.2014, 20:14   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

А 1000-зачное число - не жирно будет? Откровенно говоря, даже не знаю, как с такими строками управиться в Паскале. Но если устроят максимально 255-значные числа, то, например, так:
Код:
Var
 S8,S16:String;
 N8,N16:Byte;
 R8,R16:Real;
 f:Text;

Function N8to10(L:Byte; S:String):Real;
var
 k:Byte;
 N10,p,r:Real;
begin
 k:=0;
 p:=1;
 N10:=0;
 Repeat
  Case S[L-k] of
   '0': r:=0;
   '1': r:=1;
   '2': r:=2;
   '3': r:=3;
   '4': r:=4;
   '5': r:=5;
   '6': r:=6;
   '7': r:=7;
  end;
  N10:=N10+r*p;
  Inc(k);
  p:=p*8;
 Until k=L;
 N8to10:=N10;
end;

Function N16to10(L:Byte; S:String):Real;
var
 k:Byte;
 N16,p,r:Real;
begin
 k:=0;
 p:=1;
 N16:=0;
 Repeat
  Case S[L-k] of
   '0': r:= 0;
   '1': r:= 1;
   '2': r:= 2;
   '3': r:= 3;
   '4': r:= 4;
   '5': r:= 5;
   '6': r:= 6;
   '7': r:= 7;
   '8': r:= 8;
   '9': r:= 9;
   'A': r:=10;
   'B': r:=11;
   'C': r:=12;
   'D': r:=13;
   'E': r:=14;
   'F': r:=15;
  end;
  N16:=N16+r*p;
  Inc(k);
  p:=p*16;
 Until k=L;
 N16to10:=N16;
end;

Begin
 Assign(f,'numbers.dat');
 Reset(f);
 Readln(f,N8);
 Readln(f,S8);
 Readln(f,N16);
 Readln(f,S16);
 Close(f);
 R8:=N8to10(N8,S8);
 R16:=N16to10(N16,S16);
 if R8>R16 then writeln('>') else
 if R8<R16 then writeln('<') else
 writeln('=');
 Readln
End.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070