Нужно составить программу на C++, которая по введенному числу (до 10) выдавала бы соответствующую ей римскую цифру. Помогите
#include <iostream> #include <string> using namespace std; int main() { int number; cout << "Введите число от 1 до 10: "; cin >> number; string romanNumeral = ""; // создаем пустую строку-результат // создаем массивы для хранения римских цифр и их эквивалентов в десятичной системе счисления int decimal[] = { 10, 9, 5, 4, 1 }; string roman[] = { "X", "IX", "V", "IV", "I" }; // проходим по массивам и добавляем соответствующие римские цифры в строку-результат for (int i = 0; i < 5; i++) { while (number >= decimal[i]) { romanNumeral += roman[i]; number -= decimal[i]; } } // выводим римскую цифру на экран cout << romanNumeral << endl; return 0; } Code #include <iostream> #include <string> using namespace std; int main() { int number; cout << "Введите число от 1 до 10: "; cin >> number; string romanNumeral = ""; // создаем пустую строку-результат // создаем массивы для хранения римских цифр и их эквивалентов в десятичной системе счисления int decimal[] = { 10, 9, 5, 4, 1 }; string roman[] = { "X", "IX", "V", "IV", "I" }; // проходим по массивам и добавляем соответствующие римские цифры в строку-результат for (int i = 0; i < 5; i++) { while (number >= decimal[i]) { romanNumeral += roman[i]; number -= decimal[i]; } } // выводим римскую цифру на экран cout << romanNumeral << endl; return 0; } код не мой, на работоспособность не проверял
JEYNI Вот зачем хайды ставить? #include <iostream> #include <string> using namespace std; void rim(string& result, int num){ if(num > 0 && num < 10) { if(num < 4) for(int i = 0; i < num; ++i) result += 'I'; else if (num == 4) result = "IV"; else if (num == 9) result = "IX"; else { result += 'V'; rim(result, num-5); } } } int main(){ int num; string result; cin >> num; rim(result, num); cout << result; return 0; } C #include <iostream> #include <string> using namespace std; void rim(string& result, int num){ if(num > 0 && num < 10) { if(num < 4) for(int i = 0; i < num; ++i) result += 'I'; else if (num == 4) result = "IV"; else if (num == 9) result = "IX"; else { result += 'V'; rim(result, num-5); } } } int main(){ int num; string result; cin >> num; rim(result, num); cout << result; return 0; }
#include <iostream> using namespace std; string convertToRoman(int number) { string roman = ""; int numList[] = {1, 4, 5, 9, 10}; string symList[] = {"I", "IV", "V", "IX", "X"}; int i = 4; while (number > 0 && i >= 0) { int div = number / numList[i]; number %= numList[i]; while (div--) { roman += symList[i]; } i--; } return roman; } int main() { int number; cout << "введи число: "; cin >> number; cout << convertToRoman(number) << endl; return 0; } C #include <iostream> using namespace std; string convertToRoman(int number) { string roman = ""; int numList[] = {1, 4, 5, 9, 10}; string symList[] = {"I", "IV", "V", "IX", "X"}; int i = 4; while (number > 0 && i >= 0) { int div = number / numList[i]; number %= numList[i]; while (div--) { roman += symList[i]; } i--; } return roman; } int main() { int number; cout << "введи число: "; cin >> number; cout << convertToRoman(number) << endl; return 0; }
lethe1337, вы мне зачем это кидаете, мы ваш код обсуждаем, вы сначала сами посмотрите можно ли там трансформировать что-либо в for
Daemon, даже если и можно, правильнее будет использовать while(). я самоучка, и с такими тонкостями есть проблемы. я помню, что должен быть while(), т.к. решал подобную задачу, но конкретно объяснить не могу.
lethe1337, что значит должен быть... по-разному можно написать, и если вы не знали, то циклом for можно заменить любой другой цикл