Задание.Для записи римскими цифрами употребляются символы I, V, X, L, С,

Задание.Для записи римскими цифрами употребляются знаки I, V, X, L, С, D, М, обозначающие соответственно числа 1, 5, 10, 50, 100, 500, 1000. Составить программу, которая запись хоть какого данного числа п (п 3999) арабскими цифрами переводила бы в запись римскими цифрам. На С++.

string RomeZifr[13] = "I","IV","V","IX","X","XL","L","XC","C","CD","D","CM","M" ;
int ArabZifr[13] = 1,4,5,9,10,40,50,90,100,400,500,900,1000 ;
int ara,i=13;//iдля цикла
string S=" ";//s=для вывода числа на роме
cout lt;lt; "Водите числоlt;=3999";
cin gt;gt; ara;
while (ara gt; 0)
while (ArabZifr[i] gt; ara)
i -= 1;//убавляем
S = S + RomeZifr[i];
ara -= ArabZifr[i];

cout lt;lt; "Число=" lt;lt; S;
Может можно по иному?У меня она не работает.

Задать свой вопрос
2 ответа
include lt;iostreamgt;
include lt;stringgt;

using namespace std;

string solve(int num, int divd)

    string result = "";
    int count = 0;
    while(num)
   
        count = num / divd;
        if(count)
       
            num %= divd;
            for (int i = 0; i lt; count; i++)
                switch(divd)
               
                    case 1000:
                   
                        result+="M";
                        break;
                   
                    case 900:
                   
                        result+="CM";
                        break;
                   
                    case 800:
                   
                        result+="DCC";
                        break;
                   
                    case 700:
                   
                        result+="DCC";
                        break;
                   
                    case 600:
                   
                        result+="DC";
                        break;
                   
                    case 500:
                   
                        result+="D";
                        break;
                   
                    case 400:
                   
                        result+="CD";
                        break;
                   
                    case 300:
                   
                        result+="CCC";
                        break;
                   
                    case 200:
                   
                        result+="CC";
                        break;
                   
                    case 100:
                   
                        result+="C";
                        break;
                   
                    case 90:
                   
                        result+="XC";
                        break;
                   
                    case 80:
                   
                        result+="LXXX";
                        break;
                   
                    case 70:
                   
                        result+="LXX";
                        break;
                   
                    case 60:
                   
                        result+="LX";
                        break;
                   
                    case 50:
                   
                        result+="L";
                        break;
                   
                    case 40:
                   
                        result+="XL";
                        break;
                   
                    case 30:
                   
                        result+="XXX";
                        break;
                   
                    case 20:
                   
                        result+="XX";
                        break;
                   
                    case 10:
                   
                        result+="X";
                        break;
                   
                    case 9:
                   
                        result+="IX";
                        break;
                   
                    case 8:
                   
                        result+="VIII";
                        break;
                   
                    case 7:
                   
                        result+="VII";
                        break;
                   
                    case 6:
                   
                        result+="VI";
                        break;
                   
                    case 5:
                   
                        result+="V";
                        break;
                   
                    case 4:
                   
                        result+="IV";
                        break;
                   
                    case 3:
                   
                        result+="III";
                        break;
                   
                    case 2:
                   
                        result+="II";
                        break;
                   
                    case 1:
                   
                        result+="I";
                        break;
                   
               
       
        if(divd lt;= 1000 amp;amp; divd gt; 100) divd-=100;
        else if(divd lt;= 100 amp;amp; divd gt; 10) divd-=10;
        else divd-=1;
   
    return result;


int main()

    int num,count;
    cin gt;gt; num;
    if(num lt;= 3999) cout lt;lt; solve(num,1000);
    else cout lt;lt; "Incorrect input.";
    return 0;


includelt;iostreamgt; includelt;stringgt; using std::string; string func(int num, string, string, string); int main(int argc, char argv[])     system("chcp 1251gt;0");     std::cout lt;lt; "Введите число не большее 3999: ";       int arabien_num;       if (!(std::cin gt;gt; arabien_num) (arabien_num gt; 3999))         std::cerr lt;lt; "Невероятно инициализировать число!" lt;lt; std::endl;         exit(1);           std::string rome_num;       rome_num += func(arabien_num / 1000, "", "", "M");     arabien_num %= 1000;     rome_num += func(arabien_num / 100, "M", "D", "C");     arabien_num %= 100;     rome_num += func(arabien_num / 10,  "C", "L", "X");     arabien_num %= 10;     rome_num += func(arabien_num ,   "X", "V", "I");     std::cout lt;lt; rome_num lt;lt; std::endl;     return 0; string func(int num, string hi, string re, string lo)     switch(num)             case 9:             return lo + hi;         case 8:             return re + lo + lo + lo;         case 7:             return re + lo + lo;         case 6:             return re + lo;         case 5:             return re;         case 4:             return lo + re;         case 3:             return lo + lo + lo;         case 2:             return lo + lo;         case 1:             return lo;         case 0:             return "";    
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт