• Задание.Для записи римскими цифрами используются символы 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 << "Ведите число<=3999";
    cin >> ara;
    while (ara > 0) {
    while (ArabZifr[i] > ara)
    i -= 1;//уменьшаем
    S = S + RomeZifr[i];
    ara -= ArabZifr[i];
    }
    cout << "Число=" << S;
    Может можно по другому?У меня она не работает.

Ответы 1

  • #include<iostream> #include<string> using std::string; string func(int num, string, string, string); int main(int argc, char argv[]) {     system("chcp 1251>0");     std::cout << "Введите число не большее 3999: ";       int arabien_num;       if (!(std::cin >> arabien_num) || (arabien_num > 3999)) {         std::cerr << "Невозможно инициализировать число!" << 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 << rome_num << 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 "";     } }
    • Автор:

      amanihqfk
    • 1 год назад
    • 7
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years