Задание.Для записи римскими цифрами используются символы 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; Может можно по другому?У меня она не работает.
Этот код использует массивы для хранения строк, соответствующих римским цифрам разрядов числа. Функция toRoman принимает арабское число и возвращает его римское представление. Она проверяет диапазон числа и строит строку римских цифр по частям (тысяч, сотен, десятков, единиц).
Да, можно написать программу для перевода числа в римские цифры иначе. Вот пример:
#include <iostream>#include <string>
std::string toRoman(int num) {
if (num <= 0 || num >= 4000) {
return "Недопустимое число";
}
std::string M[] = { "", "M", "MM", "MMM" };
std::string C[] = { "", "C", "CC", "CCC", "CD", "D",
"DC", "DCC", "DCCC", "CM" };
std::string X[] = { "", "X", "XX", "XXX", "XL", "L",
"LX", "LXX", "LXXX", "XC" };
std::string I[] = { "", "I", "II", "III", "IV", "V",
"VI", "VII", "VIII", "IX" };
std::string thousands = M[num / 1000];
std::string hundreds = C[(num % 1000) / 100];
std::string tens = X[(num % 100) / 10];
std::string ones = I[num % 10];
return thousands + hundreds + tens + ones;
}
int main() {
int num;
std::cout << "Введите число (от 1 до 3999): ";
std::cin >> num;
std::cout << "Число в римских цифрах: " << toRoman(num) << std::endl;
return 0;
}
Этот код использует массивы для хранения строк, соответствующих римским цифрам разрядов числа. Функция toRoman принимает арабское число и возвращает его римское представление. Она проверяет диапазон числа и строит строку римских цифр по частям (тысяч, сотен, десятков, единиц).