Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.12.2007, 04:10
bpeguk bpeguk вне форума
Прохожий
 
Регистрация: 17.12.2007
Сообщения: 8
Репутация: 10
По умолчанию Помогите...

Помогите пожалуйста написать программу, переводящую введенное число из N-ичной системы счисления в M-ичную. N и M выбирает пользователь из диапазона [2..36] . Примного благодарен
Ответить с цитированием
  #2  
Старый 20.12.2007, 04:25
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

http://subscribe.ru/archive/comp.sof.../02185152.html
Ответить с цитированием
  #3  
Старый 20.12.2007, 12:06
Аватар для Rokuell
Rokuell Rokuell вне форума
Активный
 
Регистрация: 27.12.2006
Адрес: Псков
Сообщения: 274
Версия Delphi: Delphi 7
Репутация: 497
Восклицание Функция

Сам писал такую программу, кидаю функцию для перевода из людой системы в любую:
Код:
   function SysToSys(Num:string; OldSys,NewSys:byte):string;
   {подпрограмма возведения числа в степень}
   function InStep(Ch,St:byte):integer;
   var i:byte;
   begin
   Result:=1;
   if St>0 then
   for i:=1 to St do Result:=Result*Ch;
   end;
   {основная часть}
   var i,Rez:integer; L:byte;
   begin
   {перевод числа ( Rez ) в десятичную систему из старой ( OldSys ) }
   Rez:=0; L:=Length(Num);
   for i:=1 to L do Num[i]:=UpCase(Num[i]);
   for i:=1 to L do
     if Copy(Num,i,1)[1] in ['A'..'Z'] then
      Rez:=Rez+(Byte(Copy(Num,i,1)[1])-55)*InStep(OldSys,L-i)
     else Rez:=Rez+StrToInt(Copy(Num,i,1))*InStep(OldSys,L-i);
   {перевод числа ( Rez ) в новую систему ( NewSys ) из десятичной}
   WHILE Rez>= NewSys DO
   BEGIN
    if  (Rez mod NewSys) in [10..35] then
     Result:=Char(55+(Rez mod NewSys))+Result
    else
     Result:=IntToStr(Rez mod NewSys)+Result;
    Rez:=Rez div NewSys;
   END;
   if Rez in [10..35] then Result:=Char(55+Rez)+Result
   else Result:=IntToStr(Rez)+Result;
   end;
где Num - исходное число в виде строки
OldSys,NewSys - стараю и новая системы счисления (в интервале [2..36])
Возвращает результат в виде строки
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:11.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025