Преобразовать целое число в основание 10. Указанное число может быть в любой базе. - PullRequest
0 голосов
/ 25 февраля 2011

Я сталкивался с таким вопросом:

"Учитывая целое число, напишите программу, которая преобразует данное число в число (в базе 10). Данное число может быть в любой базе, но база неизвестна."

Укажите алгоритм

Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 25 февраля 2011

Используйте strtol для преобразования из любой базы в собственный целочисленный формат вашего компьютера.Затем используйте itoa для преобразования в базовое представление 10.

2 голосов
/ 25 февраля 2011

Учитывая число k в качестве последовательности цифр a n a n-1 ... a 0 в некоторой базе b, это значение равно

a n b n + a n-1 b n - 1 + ... + a 0 b 0

Таким образом, если вам заданы цифры k и основания b, тогда простым алгоритмом будет перебирать цифры в обратном порядке, масштабируя каждую на соответствующую степень b и складывая их все вместе.

0 голосов
/ 25 февраля 2011
int base10dig(char dig) { ... }

int trans(char *num, int base) {
  //the given number is represented as a string
  int ans = 0;
  for (int i = 0 ; num[i] != 0 ; i++) {
    ans = ans * base + base10dig(num[i]);
    //base10dig() is a mapping from a digit (char type) in given base to the base 10 (int type)
    //for example, if the given base is 16, so you should define
    //base('0') = 0, base('1') = 1, ... base('9') = 9, base('A') = 10...
  } 
  return ans;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...