Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перевод чисел из 11-ричной в 12-ричную сс 
:(
    Опции темы
непонял
Дата 30.11.2022, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 30.11.2022

Репутация: нет
Всего: нет



не могу написать программу для перевода чисел из 11сс в 12сс  smile 

PM MAIL   Вверх
HexoGen(i)us
Дата 15.12.2022, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 9.2.2003

Репутация: нет
Всего: нет



Алгоритм вашей программы:

1. Запросить строку у пользователя
2. Проверить что в строке введенной пользователем есть только цифры из 11-речной системы счисления
3. Перевести полученное число в 10 систему счисления умножая цифру из каждого разряда на соответствующую степень 11.
4. Перевести полученное десятичное число в 12 систему счисления последовательно деля число на 12 принимая полученный остаток за следующее найденное значение разряда
5. Вывести 12-ричное число заменяя полученные значения разрядов на соответствующие знаки...

На каком этапе вы остановились?

Это сообщение отредактировал(а) HexoGen(i)us - 15.12.2022, 14:32
PM MAIL   Вверх
olmov
Дата 31.12.2022, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 9.4.2009

Репутация: нет
Всего: нет



Код

/*не могу написать программу для перевода чисел из 11сс в 12сс */
#include <iostream>
#include <string>
#include <algorithm>
#include <cmath>

using std::cin;
using std::cout;
using std::string;

void to_lower(string& str);
bool check_string(const string str, const string& alphabet);
size_t convert_to_dec(const string str, const string& alphabet);
string convert_to_base(unsigned int dec, const string alphabet);
size_t pow_base(size_t b, size_t n);

int main()
{
    const string alphabet("0123456789a");

    string line = "A2";
    cout << "Enter number: ";
    std::getline(cin, line);
    std::getchar();
    to_lower(line);
    cout << "\nLine= " << line << "\n";
    if (!check_string(line, alphabet))
    {
        cout << "11 decimal number entered incorrectly";
        return -1;
    }

    size_t v = convert_to_dec(line, alphabet);

    cout << "\nDec Value = " << v;
    string str = convert_to_base(v, "0123456789AB");

    cout << "\ntwelve Value = " << str;
    return 0;
}

size_t pow_base(size_t base, size_t num)
{
    size_t result = 1;
    if (num == 0)
    {
        return result;
    }
    if (num == 1)
    {
        return base;
    }
    result = base;
    for (size_t i = 1; i < num; i++)
    {
        result *= base;
    }
    return result;
}

string convert_to_base(unsigned int dec, const string alphabet)
{
    size_t remainder = 0;
    string str;
    size_t base = alphabet.size();
    while (dec > 0)
    {
        remainder = dec % base;
        dec = dec / base;
        str.append(1, alphabet.at(remainder));
    }
    std::reverse(str.begin(), str.end());
    return str;
}

size_t convert_to_dec(const string str, const string& alphabet)
{
    size_t base = alphabet.size();
    
    char ch;      
    size_t found; 
    size_t value = 0; 
    size_t j = 0;
    for (int i = str.size() - 1; i >= 0; i--)
    {  
        ch = str.at(i);
        found = alphabet.find(ch);
        value = value + found * pow_base(base, j++);
    }

    return value;
}

bool check_string(const string str, const string& alphabet)
{
    char ch;
    size_t found;
    for (size_t i = 0; i < str.size(); i++)
    {
        ch = str.at(i);
        found = alphabet.find(ch);
        if (found == string::npos)
            return false;
    }
    return true;
}

void to_lower(string& str)
{
    for (size_t i = 0; i < str.size(); i++)
    {
        str.at(i) = tolower(str.at(i));
    }
}


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1012 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.