Задание.Для записи римскими цифрами используются символы 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
210 +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 Апр в 13:30
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 548 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир