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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Deniska07
0 / 0 / 0
Регистрация: 16.10.2016
Сообщений: 8
#1

Универсальный конвертер систем счисления - C++

16.10.2016, 08:10. Просмотров 1285. Ответов 38
Метки нет (Все метки)

Напишите программу, переводящую запись числа между двумя произвольными системами счисления.

Входные данные
На вход программа получает три величины: n, A, k, где n и k – натуральные числа от 2 до 36, основания системы счисления, A – число, записанное в в системе счисления с основанием n, A<231.

Выходные данные
Необходимо вывести значение A в системе счисления с основанием k без лидирующих нулей.

Цифры записываются следующими символами: 0, 1, 2, ..., 9, A, B, C, ..., Z.

Примеры
входные данные
10
19
2

выходные данные
10011
входные данные
10
32
3

выходные данные
1012

язык с++, python, в крайнем случае pascal

Добавлено через 15 минут
А < 2 в степени 31
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2016, 08:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Универсальный конвертер систем счисления (C++):

Программа обучения переводу чисел из десятичной системы счисления в 2 10 и 16 систем счисления - C++
дали задание составить программу нужно чтобы на экран выводилось это: Программа обучение переводу чисел из десятичной систем...

Конвертер систем счислений из 10-й в 2 || 8 || 16 - C++
Неделю назад начал изучать язык C++, и пока знаю только базовые основы, ночью думал как себя протестировать, чтобы закрепить изученное, в...

Перевод систем счисления. - C++
Здравствуйте, сразу оговорюсь: занимаюсь программированием три дня. Я вот пытался сделать программу по переводу числа из 16-ричной системы...

Перевод систем счисления - C++
Здравствуйте,помогите пожалуйста доработать программу перевода числа в разные системы счисления.Нужно чтобы заместо цифр 10 11 12 13 14...

перевод систем счисления - C++
1. Задание: Напишите программу перевода чисел из 2 системы в 10. 2.Задание: Напишите программу выполнения арифметических операций в...

Перевод систем счисления - C++
Здраствуйте, на входе имеется некое десятеричное число (примеры:1 / 2,8 / 0,123456) как перевести в другую систему счисления пробовал...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Invader0x7F
Helper C/C++
281 / 158 / 61
Регистрация: 22.09.2016
Сообщений: 519
Завершенные тесты: 5
16.10.2016, 09:05 #2
Вот ответ здесь: Подскажите, как при заданном числе Х перевести его в систему счисления с основанием n?
1
Deniska07
0 / 0 / 0
Регистрация: 16.10.2016
Сообщений: 8
16.10.2016, 10:09  [ТС] #3
немного не то, что мне нужно
0
Invader0x7F
Helper C/C++
281 / 158 / 61
Регистрация: 22.09.2016
Сообщений: 519
Завершенные тесты: 5
16.10.2016, 10:19 #4
немного не то, что мне нужно
А что именно, можете подсказать ?? Как видите я выложил код решающий данную задачу.
Теперь объясните, пожалуйста, что не так ??!!

Добавлено через 8 минут
В качестве значения переменной int base_in указываете основу системы исчисления в которой представлено входное число. Переменной int base_out присваиваете значение основы системы исчисления в которую вы хотите конвертировать. В данном примере я продемонстрировал как осуществить перевод из десятичной (основа 10) в восьмеричную (основа 8) систему исчисления. В принципе основным недостатком данного кода является, то что в процессе перевода из 10 в 16-ричную систему исчисления разряды со значениями от 10-15 не преобразовуются в буквы A-F. Может быть это и есть тот недостаток кода о котором вы говорите ??
1
Evg
Эксперт CАвтор FAQ
17826 / 6036 / 388
Регистрация: 30.03.2009
Сообщений: 16,567
Записей в блоге: 26
16.10.2016, 11:29 #5
http://www.cyberforum.ru/blogs/18334/blog96.html

Там есть и программа для преобразования, и ответ на вопрос, почему по ссылке в посте #2 задача решена не верно
1
Deniska07
0 / 0 / 0
Регистрация: 16.10.2016
Сообщений: 8
16.10.2016, 12:53  [ТС] #6
Да это тот недостаток, о котором вы говорите
0
Invader0x7F
Helper C/C++
281 / 158 / 61
Регистрация: 22.09.2016
Сообщений: 519
Завершенные тесты: 5
16.10.2016, 12:54 #7
Хорошо. Сделаю и выложу.
1
Deniska07
0 / 0 / 0
Регистрация: 16.10.2016
Сообщений: 8
16.10.2016, 13:13  [ТС] #8
Цитата Сообщение от Invader0x7F Посмотреть сообщение
Хорошо. Сделаю и выложу.
мне бы сам алгоритм понять.. код это так..второстепенное
0
Invader0x7F
Helper C/C++
281 / 158 / 61
Регистрация: 22.09.2016
Сообщений: 519
Завершенные тесты: 5
16.10.2016, 13:40 #9
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Алгоритм прост: берем число в любой системе исчисления и присваиваем его переменной. Далее в цикле, при каждой итерации делим данное число на основу системы исчисления, в которую будем конвертировать. Чтобы получить цифру разряда числа в той системе исчисления, в которую конвертируем, необходимо при каждой итерации получать остаток от деления на основу той системы исчисления в которую конвертируем.

Добавлено через 23 минуты
Вот код, который преобразовывает из любой системы исчисления base_in < 16 в любую систему исчисления base_out < 16. Для других систем исчисления base > 16 доделаю и выложу.

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
#include <iostream> 
 
using namespace std;
 
int main()
{
    int n = 256; char s_n[256] = "A10B7CF\0";
    int base_in = 7, base_out = 9;
 
    int t = 0, out_dec = 0;
    // Выполняем перевод из любой системы исчисления base_in в систему исчисления с основой 10
    // путем деления как это уже обговаривалось в предыдущем посте.
    for (int n_val = n; n_val >= 1; n_val /= 10)
         out_dec += (n_val % 10) * int(pow(base_in, t++));
 
    int q = 0, out_t = 0; 
    // Переводим из системы исчисления с основой 10 в любую систему исчисления с основой base_out
    for (int n_val_t = out_dec; n_val_t >= 1; n_val_t /= base_out)
         out_t += (n_val_t % base_out) * int(pow(10.0, q++));
    
    std::cout << "n = " << n << "(" << base_in << ")" << " => " << out_t << "(" << base_out << ")" << endl;
 
    std::cin.get();
}
1
Deniska07
0 / 0 / 0
Регистрация: 16.10.2016
Сообщений: 8
16.10.2016, 13:41  [ТС] #10
Цитата Сообщение от Invader0x7F Посмотреть сообщение
делим данное число на основу системы исчисления, в которую будем конвертировать.
А если я буду из 10тичной в 19тиричную переводить? То что делать?
0
Invader0x7F
Helper C/C++
281 / 158 / 61
Регистрация: 22.09.2016
Сообщений: 519
Завершенные тесты: 5
16.10.2016, 13:42 #11
Сказал же, что для систем исчисления base > 16 доделаю данный код и выложу.
0
Mr.X
Эксперт С++
3049 / 1694 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
16.10.2016, 13:44 #12
Цитата Сообщение от Deniska07 Посмотреть сообщение
мне бы сам алгоритм понять.. код это так..второстепенное
Ну, из этой программы вроде бы ясен алгоритм.
0
Evg
Эксперт CАвтор FAQ
17826 / 6036 / 388
Регистрация: 30.03.2009
Сообщений: 16,567
Записей в блоге: 26
16.10.2016, 13:50 #13
Invader0x7F, у тебя принципиально ничего не изменилось

В статье в общем-то всё по этому поводу было написано. Поставь себе другую задачу, невырожденную, чтобы все косяки сразу же были заметны. На вход задано число, которое в 11-ричной системе записано как "1a8a". Требуется записать это же самое число в 13-ичной системе
0
Deniska07
0 / 0 / 0
Регистрация: 16.10.2016
Сообщений: 8
16.10.2016, 13:52  [ТС] #14
Цитата Сообщение от Invader0x7F Посмотреть сообщение
Сказал же, что для систем исчисления base > 16 доделаю данный код и выложу.
Вы не поняли, каков алгоритм перевода, допустим, числа 13 (12) в (19) систему?
0
Invader0x7F
Helper C/C++
281 / 158 / 61
Регистрация: 22.09.2016
Сообщений: 519
Завершенные тесты: 5
16.10.2016, 13:53 #15
Я понял. Решаю. Скоро выложу.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2016, 13:53
Привет! Вот еще темы с ответами:

Функция перевода систем счисления - C++
Написать функцию с параметром перевода десятичного числа из системы с основанием меньше 10 в десятичную систему счисления

умножение чисел систем счисления - C++
задание: Написать программу для выполнения арифметических операций в разных системах счисления. вариант: 13. Числа по основанию 8 и 4....

перевод чисел из систем счисления - C++
Составить программу перевода чисел из десятичной системы счисления в систему с основанием: 12; 31; 3; и программу обратного перевода

Программа перевода систем счисления - C++
Не могу написать программу по переводу числа из 10-ой в 2-ую. Смотрел другие темы не понял да и программы там не понятные были. Если...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.10.2016, 13:53
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru