Форум программистов, компьютерный форум CyberForum.ru

Перевод из одной системы счисления в другую от 2 до 36 - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 59, средняя оценка - 4.86
kenedy542
0 / 0 / 0
Регистрация: 21.06.2013
Сообщений: 12
22.06.2013, 11:12     Перевод из одной системы счисления в другую от 2 до 36 #1
Помогите пожалуйсто, сколько сижу ничего стоющего не приходит в голову!
Дано целое неотрицательное число в I-ричной системе счисления. Вывести это число в J-ричной системе счисления. Ограничения: 2 <= I, J <= 36, для представления цифр 10...35 используются прописные латинские буквы A...Z соответственно, число разрядов исходного числа не превышает 1000. При вводе: В первой строке находятся числа I и J (в десятичной системе счисления), во второй строке - число для перевода. При выводе: Вывести искомое число. Если число начинается с буквы, перед ней не должно быть нуля. Примеры
Ввод 1
10 36
29234652
Вывод 1
HELLO
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
22.06.2013, 19:35     Перевод из одной системы счисления в другую от 2 до 36 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream.h>
#include <cstring>
#define DIG "0123456789ABCDEFGHIGKLMNOPQRSTUVWXYZ"
using namespace std;
 
int Atoi(char *s, int p){
    int i, a, digit[256] = {0};
    for(i = 0; DIG[i]; i++)
        digit[DIG[i]] = i;
    for(i = a = 0; s[i]; i++)
        a = a * p + digit[s[i]];
    return a;
}
 
void Itoa(int a, int p, char *s) {
   static int i = 0, n;
   if (a) {
      ++i;
      Itoa(a / p, p, s);
      s[n - i--] = DIG[a % p];
   }
   else
      s[n = i] = '\0';
}
 
int main(){
   char s[1024] = "29234652";
   Itoa(Atoi(s, 10), 36, s);
   cout << s << endl;
   return 0;
}
kenedy542
0 / 0 / 0
Регистрация: 21.06.2013
Сообщений: 12
23.06.2013, 18:12  [ТС]     Перевод из одной системы счисления в другую от 2 до 36 #3
Спасибо, только он с большим количеством символов не хочет работать, выдаёт пустую строку в выводе
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.06.2013, 18:19     Перевод из одной системы счисления в другую от 2 до 36 #4
Цитата Сообщение от kenedy542 Посмотреть сообщение
Спасибо, только он с большим количеством символов не хочет работать, выдаёт пустую строку в выводе
покажите пример
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
23.06.2013, 18:25     Перевод из одной системы счисления в другую от 2 до 36 #5
@kenedy542, а вы не забывайте, что int вмещает максимально 2^31 - 1
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.06.2013, 18:31     Перевод из одной системы счисления в другую от 2 до 36 #6
Цитата Сообщение от kenedy542 Посмотреть сообщение
число разрядов исходного числа не превышает 1000
Хммм... не заметил. нужно тоже самое, только с длинной арифметикой.
kenedy542
0 / 0 / 0
Регистрация: 21.06.2013
Сообщений: 12
23.06.2013, 20:42  [ТС]     Перевод из одной системы счисления в другую от 2 до 36 #7
В общем щас я скину фотографию с тестами, которые программа должна пройти
kenedy542
0 / 0 / 0
Регистрация: 21.06.2013
Сообщений: 12
23.06.2013, 20:50  [ТС]     Перевод из одной системы счисления в другую от 2 до 36 #8
http://www.cyberforum.ru/attachment....1&d=1372006228
Миниатюры
Перевод из одной системы счисления в другую от 2 до 36  
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.06.2013, 20:56     Перевод из одной системы счисления в другую от 2 до 36 #9
а откуда эти тесты, что за систему пишите?
kenedy542
0 / 0 / 0
Регистрация: 21.06.2013
Сообщений: 12
23.06.2013, 21:01  [ТС]     Перевод из одной системы счисления в другую от 2 до 36 #10
Цитата Сообщение от Thinker Посмотреть сообщение
а откуда эти тесты, что за систему пишите?
В общем это летняя практика у 1гго курса))
Olivеr
23.06.2013, 21:10
  #11

Не по теме:

Цитата Сообщение от kenedy542 Посмотреть сообщение
В общем это летняя практика у 1гго курса))
Прикольно. Вам тесты дают, а нам не давали

Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.06.2013, 21:10     Перевод из одной системы счисления в другую от 2 до 36 #12
первым делом реализуйте длинную арифметику, а затем функции Atio и Itoa немного преобразовать останется.
kenedy542
0 / 0 / 0
Регистрация: 21.06.2013
Сообщений: 12
23.06.2013, 21:16  [ТС]     Перевод из одной системы счисления в другую от 2 до 36 #13
Цитата Сообщение от Thinker Посмотреть сообщение
первым делом реализуйте длинную арифметику, а затем функции Atio и Itoa немного преобразовать останется.
Вопрос наверное глупый, но что значит реализовать длинную арефметику несовсем понимаю))
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.06.2013, 21:17     Перевод из одной системы счисления в другую от 2 до 36 #14
http://ru.wikipedia.org/wiki/%C4%EB%...E5%F2%E8%EA%E0
kenedy542
0 / 0 / 0
Регистрация: 21.06.2013
Сообщений: 12
25.06.2013, 14:23  [ТС]     Перевод из одной системы счисления в другую от 2 до 36 #15
К сожалению, из-за моего недостаточного знания С++(мало его изучаю только, 1 семестр) не могу понять этот метод и его в дальнейшем использовать. Не можешь его реализовать? пробовал другими способами написать эту программу, частично используя твой алгоритм, но мне сказали что без Длинной арифметики ничего не поделаешь...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2013, 14:26     Перевод из одной системы счисления в другую от 2 до 36
Еще ссылки по теме:

C++ Перевод из одной системы счисления в другую.
C++ Перевод из одной системы счисления в другую
C++ Перевод из одной системы счисления в другую

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
25.06.2013, 14:26     Перевод из одной системы счисления в другую от 2 до 36 #16
Цитата Сообщение от kenedy542 Посмотреть сообщение
не могу понять этот метод и его в дальнейшем использовать.
так у вас
Цитата Сообщение от kenedy542 Посмотреть сообщение
это летняя практика у 1гго курса
вот и займитесь плотнее этим вопросом, время как раз для этого.
Yandex
Объявления
25.06.2013, 14:26     Перевод из одной системы счисления в другую от 2 до 36
Ответ Создать тему
Опции темы

Текущее время: 05:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru