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

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

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

Из арабских чисел в римские - C++

12.07.2012, 14:21. Просмотров 602. Ответов 4
Метки нет (Все метки)

Функция для перевода из арабских чисел в римские. Как можно заменить устаревший sprintf?

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
32
33
string _func_arab_to_roman(int arab){
    string arab_str;
    string res;
    char arr[100];
    int d;
 
    sprintf(arr, "%d", arab);
    arab_str = arr;
 
    int arab_len = arab_str.size();
    for (int i = 0; i < arab_len; i++){
        d = arab_str[arab_len - i - 1] - 48;
        if ((d + 1) % 5 == 0){
            res = copy("IXCM", i, 1) + copy("VXLCDM", i * 2 + (d + 1) / 5 - 1, 1) + res;
        }
        else{
            res = copy("VLD", i, d / 5) + copy("IIIXXXCCCMMM", i * 3, d % 5) + res;
        }
    }
 
    return res;
}
 
string copy(string s, int first, int k){
    string res;
    for (int i = first; i < first + k; i++){
        if (i == s.size()){
            return res;
        }
        res += s[i];
    }
    return res;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.07.2012, 14:21     Из арабских чисел в римские
Посмотрите здесь:

C++ Перевод арабских цифр в римские с++
C++ Арабские в римские
Преобразование арабских чисел в римские C++
Перевод арабских чисел в римские C++
Перевод чисел из арабских в римские. Пределы int C++
Римские числа C++
Составить программы для перевода арабских чисел в римские и для обратной операции C++
C++ Из арабских чисел в римские Visual C++
Составить программу для перевода арабских чисел в римские и для зворотньох операции. Например 255 = ССЛВ = СТО + СТО + Пятьдесят + Пять C++
Перевод арабских чисел в римские C++
C++ Программа перевода арабских чисел в римские
Рекурсивно определить количество арабских цифр в строке C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrCold
852 / 750 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
12.07.2012, 15:03     Из арабских чисел в римские #2
Цитата Сообщение от Antoha1 Посмотреть сообщение
Как можно заменить устаревший sprintf?
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
#include <iostream>
#include <string>
#include <sstream>
 
using namespace std;
 
int main ()
{
 
    char chararr[12];
 
    int iValue = 36;
 
    sprintf( chararr, "%d", iValue );
     
    cout << chararr << endl;
 
     ostringstream ostr;
 
     ostr << iValue;
 
    strcpy ( chararr, ( ostr.str() ).c_str() );
 
    cout << chararr << endl;
 
    return ( 0 );
}
Добавлено через 52 секунды
sprintf хоть старый, но рулит .
soon
2537 / 1302 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
12.07.2012, 15:15     Из арабских чисел в римские #3
Цитата Сообщение от Antoha1 Посмотреть сообщение
Как можно заменить устаревший sprintf?
В вашем примере достаточно std::to_string
Antoha1
0 / 0 / 0
Регистрация: 24.05.2012
Сообщений: 16
12.07.2012, 15:21  [ТС]     Из арабских чисел в римские #4
Цитата Сообщение от MrCold Посмотреть сообщение
Добавлено через 52 секунды
sprintf хоть старый, но рулит .
Спасибо! Все работает!

ostr << iValue;

<< что делает в этом примере? Пишу для windows forms
MrCold
852 / 750 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
12.07.2012, 15:43     Из арабских чисел в римские #5
Antoha1, для WinForms есть свои функ конвертации
C++
1
2
3
int iVal = 36;
 
  String ^s = Convert::ToString( iVal );
http://www.cyberforum.ru/redirector....UzRHZzLjgwJTI5
Yandex
Объявления
12.07.2012, 15:43     Из арабских чисел в римские
Ответ Создать тему
Опции темы

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