Задание.Для записи римскими цифрами используются символы 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;
Может можно по другому?У меня она не работает.

21 Апр 2020 в 19:48
239 +1
0
Ответы
1

Да, можно написать программу для перевода числа в римские цифры иначе. Вот пример:

#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 принимает арабское число и возвращает его римское представление. Она проверяет диапазон числа и строит строку римских цифр по частям (тысяч, сотен, десятков, единиц).

18 Апр 2024 в 13:30
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир