Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Problem 2: (Roman numerals) Write a program that converts an integer between 1 a

ID: 3591524 • Letter: P

Question

Problem 2: (Roman numerals) Write a program that converts an integer between 1 and 3999 into Roman numerals. The input and output should be exactly: Input a number in Arabic numerals: [USER ENTERS AN INTEGER BETWEEN 1 AND 3999] xxxxxx is your number in Roman numerals. Use the "standard https://en.wikipedia.org/wiki/Roman_numerals Assume the input is indeed between 1 and 3999. You may not use any libraries aside from iostream form" described in: and string. Name your file roman.cpp Hint. Treat each decimal digit separately (i.e., do the thousands, hundreds, tens, and ones sepa- rately) and concatenate the results

Explanation / Answer

#include <iostream>
using namespace std;

int sub_digit(char num1, char num2, int i, char *c)
{
c[i++] = num1;
c[i++] = num2;
return i;
}

int digit(char ch, int n, int i, char *c)
{
for (int j = 0; j < n; j++)
c[i++] = ch;
return i;
}

void printRoman(int number)
{
char c[10001];
int i = 0;

if (number <= 0)
{
printf("Invalid number");
return;
}

while (number != 0)
{

if (number >= 1000)
{

i = digit('M', number/1000, i, c);
number = number%1000;
}

else if (number >= 500)
{

if (number < 900)
{

i = digit('D', number/500, i, c);
number = number%500;
}

else
{

i = sub_digit('C', 'M', i, c);
number = number%100 ;
}
}

else if (number >= 100)
{

if (number < 400)
{
i = digit('C', number/100, i, c);
number = number%100;
}

else
{
i = sub_digit('C','D',i,c);
number = number%100;
}
}

else if (number >= 50 )
{

if (number < 90)
{
i = digit('L', number/50,i,c);
number = number%50;
}

else
{
i = sub_digit('X','C',i,c);
number = number%10;
}
}

else if (number >= 10)
{

if (number < 40)
{
i = digit('X', number/10,i,c);
number = number%10;
}

else
{
i = sub_digit('X','L',i,c);
number = number%10;
}
}

else if (number >= 5)
{
if (number < 9)
{
i = digit('V', number/5,i,c);
number = number%5;
}

else
{
i = sub_digit('I','X',i,c);
number = 0;
}
}

else if (number >= 1)
{
if (number < 4)
{
i = digit('I', number,i,c);
number = 0;
}

else
{
i = sub_digit('I', 'V', i, c);
number = 0;
}
}
}

printf("Roman numeral is: ");
for (int j = 0; j < i; j++)
printf("%c", c[j]);
}

int main()
{
int number = 0;
printf("Enter decimal number : ");
scanf("%d",&number);

printRoman(number);

return 0;
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote