Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2008, 18:28   #1
Xeon332
Скоро сессия...
Форумчанин
 
Регистрация: 03.01.2008
Сообщений: 224
По умолчанию Pascal. перевод из десятичной системы счисления в двоичную

Возник вопрос при написании программы, которая переводила бы десятичную СС в двоичную. Подскажите каким оператором лучше работать? При каждом шаге число нужно делить на 2, и после того, как само число будет меньше двух, то использовать if? Если можно распишите пожалуста. Спасиб
Xeon332 вне форума Ответить с цитированием
Старый 18.01.2008, 18:55   #2
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Вот этот код должен работать на паскале
Код:
function ItoS(val:integer):string;
var
  _r:string;
begin
  Str(val,_r);
  ItoS:=_r;
end;

function ConvertToCS(val:integer;CS:integer):string;
var
  _r,_r1:string;
  _m,i:integer;
begin
  _r:='';
  if CS>16 then exit;
  repeat
   _m:=val mod CS;
   val:=val div CS;
   if _m<10 then
    _r:=_r+ItoS(_m)
            else
    _r:=_r+chr(ord('A')+_m-10);
  until val=0;

  _r1:='';
  for i:=length(_r) downto 1 do
   _r1:=_r1+_r[i];
  ConvertToCS:=_r1;
end;
ConvertToCS функция преобразовывает число в ЛЮБУЮ систему счисления 2-16, хоть в четырнадцатеричную! система счисления указывается вторым параметром.
например
Код:
 writeln(ConvertToCS(78965,14));
 writeln(ConvertToCS(454,8));
rpy3uH вне форума Ответить с цитированием
Старый 19.01.2008, 08:15   #3
Xeon332
Скоро сессия...
Форумчанин
 
Регистрация: 03.01.2008
Сообщений: 224
По умолчанию

Спасибо большое. Буду разбираться.
Xeon332 вне форума Ответить с цитированием
Старый 24.01.2011, 13:54   #4
k0tone
Пользователь
 
Аватар для k0tone
 
Регистрация: 09.11.2010
Сообщений: 99
По умолчанию

Можно ещё вот-так:
Код:
program test;
uses crt;
var b:array [1..255] of integer;
    a,i,n:integer;
begin
clrscr;
write('Vvedite a=');
readln(a);
i:=0;
while a>=1 do
  begin
    i:=i+1;
    b[i]:=a mod 2;
    a:=a div 2;
  end;
n:=i;
for i:=n downto 1 do
write(b[i]:3);
readln;
end.
Если я вам помог - нажмите на весы пот аватаркой!
k0tone вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод целых чисел из одной системы счисления в другую =LeonZone= Помощь студентам 19 12.12.2010 16:18
Программа перевода из одной системы счисления в другую - Turbo Pascal 7.0. Prescott Помощь студентам 5 19.03.2010 19:26
Системы счисления vdv08 Паскаль, Turbo Pascal, PascalABC.NET 1 08.05.2008 17:32
Перевод из одной системы счисления в другую Sky_VSUH Помощь студентам 1 28.02.2008 20:18