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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.09.2018, 18:06   #1
Artem_856
Пользователь
 
Регистрация: 20.09.2018
Сообщений: 11
По умолчанию Перевод одинадцатиричной системы чисел в десятичную

Помогите пожалуйста создать программу, которая переводит одинадцатиричную систему в десятичную. И ещё должны переводиться, как целые, так и дробные числа.
Artem_856 вне форума Ответить с цитированием
Старый 20.09.2018, 19:47   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,534
По умолчанию

Ну вот сентябрь - и пошли бредовые студенческие задания Додуматься надо - 11-ричная система . Что является 11-м символом ? А? Напиши пример числа с дробью в этой системе. 237.1А78 - годится ?
digitalis вне форума Ответить с цитированием
Старый 20.09.2018, 20:30   #3
Artem_856
Пользователь
 
Регистрация: 20.09.2018
Сообщений: 11
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
Ну вот сентябрь - и пошли бредовые студенческие задания Додуматься надо - 11-ричная система . Что является 11-м символом ? А? Напиши пример числа с дробью в этой системе. 237.1А78 - годится ?
Я думаю, что одиннадцатый символ A. 237.1А78 - думаю подойдёт. Буду очень благодарен если сможете помочь, а то я, вообще, только узнал, что такую систему можно придумать. Думал, что опечатка )
Artem_856 вне форума Ответить с цитированием
Старый 20.09.2018, 23:01   #4
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

Код:
#include <iostream>
#include <string>

bool is_real(const std::string& num)
{
    return num.find('.')<num.size();
}

template<unsigned Base>
int to_int(const std::string& str)
{
   static_assert(Base, "Base must be nonzero");
   int mult = 1, result = 0;
   for(size_t i = str.size(); i>0; --i)
   {
       if(str[i-1]>='0' && str[i-1]<='9')
           result += mult*(str[i-1]-'0');
       else
           result += mult*(std::toupper(str[i-1])-'A');
       mult*=Base;
   }
   return result;
}


template<size_t Base>
std::pair<int,int> to_real(const std::string& str)
{
    const size_t dot_pos = str.find('.');
    const int first_part = to_int<Base>(str.substr(0, dot_pos));
    const int second_part = to_int<Base>(str.substr(dot_pos+1));
    return std::make_pair(first_part, second_part);
}

int main()
{
    std::string in;
    std::cin>>in;
    std::cout << "Answer is ";
    if(!is_real(in))
        std::cout<<to_int<11>(in);
    else
    {
        std::pair<int,int> real = to_real<11>(in);
        std::cout<<real.first<<'.'<<real.second;
    }
}
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума Ответить с цитированием
Старый 20.09.2018, 23:09   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
Додуматься надо - 11-ричная система.
а что тут додумываться? чем 11-ричная хуже двоичной, троичной, шестнадцатеричной или любой другой?

Цитата:
Сообщение от digitalis Посмотреть сообщение
Что является 11-м символом ? А?
ни в коем разе.
традиционно, во всех системах от 11-ричной до 36-ричной принято использовать буквы латинского алфавита (значения букв привожу в десятичной СС):
A - 10
B - 11
C - 12
D - 13
E - 14
F - 15
G - 16
и т.д.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.09.2018, 08:20   #6
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,534
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
а что тут додумываться? чем 11-ричная хуже двоичной, троичной, шестнадцатеричной или любой другой?
Хуже. Двоичная - система записи числа, 1:1 отражающая его машинное представление; 8 и 16 - удобная, бо более компактная система записи; 11-я - не применяемая нигде, высосанная из пальца и потому хуже.
Цитата:
ни в коем разе.
A - 10
А я что сказал? В 11-ричной системе 10 "традиционных" цифр 0...9 и дополнительная, 11-я, следующая по порядку - А. И в моем примере это однозначно прописано.
digitalis вне форума Ответить с цитированием
Старый 21.09.2018, 08:40   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
11-я - не применяемая нигде, высосанная из пальца и потому хуже
Она не поэтому хуже, а из-за того, что в основании простое число. Как следствие масса неудобств. Вот 12-ричная как по мне гораздо удобней 10-ричной. Мало того, что пополам без остатка, так еще треть и четверть. А шумеры вообще 60-ричную использовали. А не позиционная римская тот еще отстой, только продвинутые в математике могли умножать, не говоря про деление
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 21.09.2018, 09:02   #8
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,534
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Она не поэтому хуже, а из-за того, что в основании простое число. Как следствие масса неудобств. Вот 12-ричная как по мне гораздо удобней
Все эти -ричные системы, как мы помним, не что иное, как символьное (для экрана или бумаги) представление числа, прямого отношения к процессорной арифметике не имющее, и неудобство может быть, только если мы на бумаге, "столбиком", захотим проверить правильность результата. Вот к примеру в PDP-11 в документации применялась 8-ричная система представления - немного неудобно, один байт расползался на 2 соседние цифры. И это влияло как-то на фунциклирование процессора (по сравнению с IBM-360, к примеру) ? Нисколько.
Меня всегда смешат вопросы новичков (тьху, слово-то какое зловещее) : "У меня в ячейке А число - как узнать - оно 10- или 16-ричное" ?
ТС нас извинит за немножко флуд, но ответ-то ему уже нарисовали.

Последний раз редактировалось digitalis; 21.09.2018 в 09:27.
digitalis вне форума Ответить с цитированием
Старый 21.09.2018, 09:33   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
Все эти -ричные системы, как мы помним, не что иное, как символьное (для экрана или бумаги) представление числа
Бред. Все эти системы счисления появились ещё тогда, когда о "символьном представлении" ещё даже не догадывались.


Цитата:
Сообщение от digitalis Посмотреть сообщение
в PDP-11 в документации применялась 8-ричная система представления - немного неудобно, один байт расползался на 2 соседние цифры.
честно говоря, не помню, что там было в документации на PDP-11, но один байт в 8ричной системе занимает три цифры.
Может быть, Вы путаете с шестнадцатеричной системой счисления? Там байт в аккурат две цифры занимает.



Цитата:
Сообщение от digitalis Посмотреть сообщение
флуд
вот это точно.
Причём ВООБЩЕ никакого отношения к задаче однозначно не имеющий!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.09.2018, 10:03   #10
Artem_856
Пользователь
 
Регистрация: 20.09.2018
Сообщений: 11
По умолчанию

Цитата:
Сообщение от New man Посмотреть сообщение
Код:
   static_assert(Base, "Base must be nonzero");
Очень благодарен за помощь, но тут почему то ошибку выбивает. " 'static_assert' was not declared in this scope"
Artem_856 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод чисел разделенных пробелами из шестнадцатеричной системы счисления в десятичную и наоборот AEBus Microsoft Office Excel 4 09.06.2017 08:42
Перевод чисел из двоичной системы счисления в десятичную без использования процедур и функций crolikoff Паскаль, Turbo Pascal, PascalABC.NET 22 23.01.2016 21:35
Перевод из шестнадцатеричной системы в десятичную AnderoN Общие вопросы Delphi 3 07.05.2011 19:55
Перевод числа из двоичной системы в десятичную С++ kontroller Помощь студентам 2 15.02.2010 20:39