Вопрос по информатике:
Задание.Для записи римскими цифрами используются символы 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;
Может можно по другому?У меня она не работает.
Трудности с пониманием предмета? Готовишься к экзаменам, ОГЭ или ЕГЭ?
Воспользуйся формой подбора репетитора и занимайся онлайн. Пробный урок - бесплатно!
- 22.05.2017 19:56
- Информатика
- remove_red_eye 16804
- thumb_up 43
Ответы и объяснения 2
- 23.05.2017 04:20
- thumb_up 9
#include
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 < 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 100) divd-=100;
else if(divd 10) divd-=10;
else divd-=1;
}
return result;
}
int main()
{
int num,count;
cin >> num;
if(num <= 3999) cout << solve(num,1000);
else cout << "Incorrect input.";
return 0;
}
- 24.05.2017 03:35
- thumb_up 45
Знаете ответ? Поделитесь им!
Есть сомнения?
Не нашли подходящего ответа на вопрос или ответ отсутствует? Воспользуйтесь поиском по сайту, чтобы найти все ответы на похожие вопросы в разделе Информатика.
Трудности с домашними заданиями? Не стесняйтесь попросить о помощи - смело задавайте вопросы!
Информатика — наука о методах и процессах сбора, хранения, обработки, передачи, анализа и оценки информации с применением компьютерных технологий, обеспечивающих возможность её использования для принятия решений.