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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.09.2012, 10:05   #1
mynivki
 
Регистрация: 14.12.2011
Сообщений: 4
По умолчанию Перевод 10 -> 11 системы исчисления

Здравствуйте . Помогите пожалуйста написать алгоритм перевода из десятичной в одинадцатиричную систему исчисления. ( Если можно , комментами )

P.S : C++ только начал учить и многого не знаю. Сам пытался сделать, но нагородил такой огород, что самому страшно.

Последний раз редактировалось mynivki; 27.09.2012 в 10:16.
mynivki вне форума Ответить с цитированием
Старый 27.09.2012, 11:48   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

там а чем перевод в 11-чную систему отличается от перевода в двоичную, троичную, шестнадцатеричную систему счисления?!
общий алгоритм такой делим число (для удобства берём число в десятичной СС)
на основание требуемой СС. остаток присоединяем слева к результирующей строке.
Повторяем, пока число не станет равно нулю.
Всё.

пример на Pascal/Delphi (собственно цикл преобразования я выделил цветом):
Код:
program ConverToAnySS;
{$APPTYPE CONSOLE}
uses SysUtils;

procedure CheckBaseAndHaltWhenError(Base: integer);
begin
  if Base<2 then begin
         WriteLn('Error! Not available so small base!');  Readln;  Halt(100);
  end;
  if Base>33 then begin
         WriteLn('Error! Too big! No so many char for conversion!');
         Readln; Halt(100);
  end;
end;

function DigitToChar(x:integer) : string;
begin
  if x<10
     then DigitToChar := IntToStr(x)
     else DigitToChar := chr( ord('A') + (x-10) );
end;

var N, Base, t : integer;
  rez : string;
begin
  WriteLn; Write('Enter BASE for conversion:');
  Readln(Base);

  CheckBaseAndHaltWhenError(Base);

  repeat

    Write('Enter decimal number for conversion (0 for exit): ');
    ReadLn(N);

    rez := '';
    t := N;
    while t<>0 do begin
      rez := DigitToChar( t mod Base) + rez;
      t := t div Base;
    end;
    if rez='' then rez := '0';

    WriteLn(' rezult = '+rez);

  until N=0;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.09.2012, 12:16   #3
three_cats
Форумчанин
 
Аватар для three_cats
 
Регистрация: 27.09.2012
Сообщений: 175
По умолчанию

Код:
#include <iostream>
#include <vector>
#include <locale>

using namespace std;

void main() {

setlocale(LC_ALL,"Russian");

const int OSNOVANIE = 11;

cout << "Введите число в системе счисления 10: ";
int v;
cin >> v;
vector<int> ost;
int tmp = 0;
do  {
tmp  = v % OSNOVANIE;
ost.push_back(tmp);
v = v / OSNOVANIE;
} while (v>0);

cout << "Полученное число в основании " << OSNOVANIE << ": ";

for (int i=ost.size()-1;i>=0;i--) {
if (ost[i] == 10) cout << 'A'; else cout << ost[i];
}
cout << endl;

}
Никто

мой блог

Последний раз редактировалось three_cats; 27.09.2012 в 16:54.
three_cats вне форума Ответить с цитированием
Старый 27.09.2012, 16:42   #4
three_cats
Форумчанин
 
Аватар для three_cats
 
Регистрация: 27.09.2012
Сообщений: 175
По умолчанию

Прошу прощения! Совсем забыл! Код нужно дополнить, чтобы он показывал цифру "A".
Исправил.
Никто

мой блог

Последний раз редактировалось three_cats; 27.09.2012 в 16:53.
three_cats вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод из одной системы исчисления в другую. Svop Помощь студентам 7 20.12.2010 19:00
С++ перевод чисел в разные системы исчисления Anty_F[R]eez Помощь студентам 2 09.06.2010 15:23
Перевод в различные системы исчисления ~AngelOK~ Компоненты Delphi 1 11.10.2009 16:57
перевод системы исчисления (16 ->10) adwaer Помощь студентам 5 15.06.2008 20:29