Для записи римскими цифрами используются символы 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; может можно по другому? у меня она не работает.
200
231
Ответы на вопрос:
#include < iostream> #include < string> 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 < = 1000 & & divd > 100) divd-=100; else if(divd < = 100 & & 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; }
#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 : : 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 ""; } }
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
valera21210524.12.2022 02:44
-
milanka2808200609.07.2022 02:48
-
Uzdenova2005jam26.12.2021 09:36
-
Arina20044412.07.2022 20:04
-
2da0s0ha2124.01.2020 07:43
-
коля72520.06.2021 07:34
-
mastervydy17.05.2023 04:54
-
вик23204.01.2022 05:08
-
Yaroslava190207.10.2021 02:10
-
GolDash08.09.2021 07:50
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.