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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2023, 11:18   #1
Vintiti26
Новичок
Джуниор
 
Регистрация: 10.01.2023
Сообщений: 1
По умолчанию Двоичное счисление

Как редактировать код, чтобы все числа в тексте выдавал в бинарном виде а не 16ичном?
#include <iostream>
#include <string>

using namespace std;
using substr_t = pair<size_t, size_t>;
substr_t parseNumber(const string& text, size_t pos = 0){
for(size_t j, i = pos; i< text.size(); ++i)
if (isdigit(text[i])){
for(j = i+1; j < text.size(); ++j)
if (!isdigit(text[j]))
return {i,j};
return {i,j};
}
return {string::npos, string::npos};
}
int main()
{
string str="I have 10 dollars, 13 apples, 5 oranges.I have 1010 dollars, 1101 apples, 101 oranges.", res;
char snumber[20];
substr_t number_info;
size_t last_pos = 0;
res.reserve(str.size());
number_info = parseNumber(str, last_pos);
while(number_info.first != string::npos){
sprintf( snumber, "%x", stoi(str.substr(number_info.first, number_info.second - number_info.first)));
res += str.substr(last_pos, number_info.first - last_pos) + snumber;
last_pos = number_info.second;
number_info = parseNumber(str, last_pos);
snumber[0]='\0';
}
res += str.substr(last_pos, str.size() - last_pos);

cout << "\nStr: " << str << "\n";
cout << "Result: " << res << "\n\n";
}
Vintiti26 вне форума Ответить с цитированием
Старый 10.01.2023, 12:48   #2
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 736
По умолчанию

Тэги кода и форматирование сначала. Может новую программу написать?
Cuprum5 вне форума Ответить с цитированием
Старый 10.01.2023, 17:01   #3
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 736
По умолчанию

Код:
#include <iostream>
#include <string>
using namespace std;
char snumber[55];

using substr_t = pair<size_t, size_t>;

substr_t parseNumber(const string& text, size_t pos = 0)
{
    for(size_t j, i = pos; i < text.size(); i++)
        if(isdigit(text[i]))
        {
            for(j = i+1; j < text.size(); j++)
                if(!isdigit(text[j]))
                    return {i,j};
            return {i,j};
        }
    return {string::npos, string::npos};
}

void Dec2Bin(int n)
{
    int length = 0, c = n;
    unsigned char Bit;

    while(c)
    {
        Bit = c%2;
        snumber[length++] = Bit + 0x30;
        c /= 2;
    }
    snumber[length] = '\0';
    for(int i = 0; i < length/2; i++)
        std::swap(snumber[i], snumber[length - i - 1]);
}

int main()
{
    string str = "I have 10 dollars, 13 apples, 5 oranges. I have 1010 dollars, 1101 apples, 101 oranges.", res;
    int n;
    substr_t number_info;
    size_t last_pos = 0;

    res.reserve(str.size());
    number_info = parseNumber(str, last_pos);
    while(number_info.first != string::npos)
    {
        //sprintf(snumber, "%x", stoi(str.substr(number_info.first, number_info.second - number_info.first)));
        n = stoi(str.substr(number_info.first, number_info.second - number_info.first));
        Dec2Bin(n);
        res += str.substr(last_pos, number_info.first - last_pos) + snumber;
        last_pos = number_info.second;
        number_info = parseNumber(str, last_pos);
        snumber[0] = '\0';
    }
    res += str.substr(last_pos, str.size() - last_pos);

    cout << "Str: " << str << "\n";
    cout << "Result: " << res << "\n\n";

    return 0;
}
Cuprum5 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C# Задание с деревьями 1)Построить двоичное дерево и вывести его на экран 2)построить двоичное дерево поиска ekzo Фриланс 3 21.01.2017 06:23
C# Задание с деревьями 1)Построить двоичное дерево и вывести его на экран 2)построить двоичное дерево поиска ekzo Помощь студентам 0 20.01.2017 12:00
Двоичное представление fasty Помощь студентам 4 21.09.2012 17:47
Перевести целое положительное десятичное число в шестнадцатеричное счисление Alfis Паскаль, Turbo Pascal, PascalABC.NET 3 28.12.2008 20:40
Используя двоичное счисление, произвести вычитание freddy Помощь студентам 3 02.06.2008 22:41