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

In C language please!!!! Pseudocode provided!!! Please follow the requirments an

ID: 3774871 • Letter: I

Question

In C language please!!!! Pseudocode provided!!! Please follow the requirments and the format of the pseudocode.

Write an interactive program that can be used as a Roman numeral calculator. The program will accept two Roman numerals and an arithmetic operation from the keyboard and will print out the result of the operation. The values of the Roman numeral digits are as follows:

I 1

V 5

X 10

L 50

C 100

D 500

M 1000

Each Roman numeral must start with a digit of highest value and must end with a digit of lowest value. That is, 9 will be represented as VIIII instead of IX. The recognizable arithmetic operations are integer addition, integer subtraction, integer multiplication, and modulus.

Internally, the program will convert the Roman numerals into integers, perform the required operation, and then convert the result back to Roman numerals for printing. Input and output characters one at a time. Do not use strings, arrays, functions, or anything else we have not covered in class.

Negative numbers are not acceptable as input. The only instance of negative numbers is when the first number is smaller than the second and the operation is subtraction, in which case a negative Roman numeral will result and be printed.

If division by zero is attempted by the user, alert the user, and accept a different arithmetic operation.

Much of the code is given below in a version that does not use functions, and again below that is a version that does use functions. This use of functions to make main look simpler is sometimes called parameterized. Your final program should be parameterized.

Sample Output:

Welcome to Roman Calculator. Hail Caesar!

Enter first number: MMXI

The first number is : 2011

Enter second number: VIII

The second number is : 8

Enter operation (* / + - ): +

Answer: 2019

In Roman: MMXVIIII

Press Q to quit, any other key to continue.

Enter first number: XXII

The first number is : 22

Enter second number: VII

The second number is : 7

Enter operation (* / + - ): /

Answer: 3

In Roman: III

Press Q to quit, any other key to continue. Thanks for playing! Press any key to continue . . .

Psuedocode:

// This is a mix of psuedocode and actual C code
// display welcome message


// MAIN PROCESSING LOOP
do{

   // prompt user for first number

   // zero num1
   // loop until <enter>, ignore bad chars
   do {
       // get user input
       switch (ch) {
       case 'M':
           putch(ch);
           num1 += 1000;
           break;
           // etc...
           // invalid entres will be ignored by default (no actual default)
       }
   } while (ch != ' ');

   // display first number in arabic numerals

   // REPEAT FOR NUM2
   // loop, looking for valid operation input
   do {

       // prompt for user operation
       // get user input
       // set flag to true

       // check for valid operation and perform operation
       switch (ch) {
       case '+':
           ans = num1 + num2;
           break;
           //...
       case '/':
           if (!num2){
               printf(" Can't Divide by zero. Select another operation. ");
               opOK = false;
               break;
           }
           ans = num1 / num2;
           break;
           //...
       default:
           printf(" Unidentfied operation. Select another operation. ");
           opOK = false;
       }
   } while (!opOK);

   // Convert and display roman numerals
   if (ans<0){
       printf("-");
       ans *= -1;
   }
   while (ans >= 1000){
       printf("M");
       ans -= 1000;
   }
   // etc...

   // ask user if they want to go again
   // get user’s response into a character

} while again is not 'Q' // END MAIN LOOP

// display farewell message

Parameterized Version of Roman Calculator – USE THIS PLEASE

Edit and re-write the previous program as necessary to use functions. Create functions that can use the following main program.

void main char chi char agains int opOK, int display welcome message printf Welcome to Roman Calculator. Hail Caesar An main loop dod //prompt user for first number lnEnter first number: /l loop until enter ignore bad chars num1 Oman O, display first number in arabic numerals printf mnahefirst number is: d numm1); //prompt user for second number printf nEnter second number: loop until enter ignore bad chars num2 a get Romano, display second numberinarabic numerals printf( InThe second number is: %d nuun2); ans dooperation accesses global nun1 nun print Romanian ask user if they want to go again printf InAnPress Q to quit, any other key to continue. get users response again getcho, while (again display farewell message printf Thanks for playing

Explanation / Answer

Hello friend's I apolozise my mistake and try to find the solution of your problem in your required term .In this programe i read roman number onlyupto 1000 . write me if my code fullfill your requiement..

Thanks for cooperation

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
long int getRoman();
long int dooperation(long int,long int);
long int ans;
void romantodecimal(long int);
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;
}

int printRoman(long int number)
{
char* c;
int i = 0;

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

while (number != 0)
{
   if(number>=1000000)
   {
   i = digit('m', number/1000000, i, c);
   number = number%1000000;
   }
   else if (number >=500000)
   {
   if (number<900000)
   {
   i = digit('d', number/500000, i, c);
   number = number%500000;
   }
   else
   {
       i = sub_digit('c', 'm', i, c);
       number = number%500000 ;
   }
   }
   else if (number >= 100000)
   {
   if (number < 90000)
   {
   i = digit('c', number/100000, i, c);
   number = number%100000;
   }
   else
   {
       i = sub_digit('l', 'd', i, c);
       number = number%100000 ;
   }
   }
   else if (number >= 50000)
   {
   if (number < 40000)
   {
   i = digit('l', number/50000, i, c);
   number = number%50000;
   }
   else
   {
       i = sub_digit('x', 'c', i, c);
       number = number%50000 ;
   }
   }
   else if (number >= 10000)
   {
   if (number < 9000)
   {
   i = digit('x', number/10000, i, c);
   number = number%10000;
   }
   else
   {
       i = sub_digit('v', 'l', i, c);
       number = number%10000;
   }
   }
   else if (number >= 5000)
   {
   if (number < 4000)
   {
   i = digit('v', number/5000, i, c);
   number = number%5000;
   }
   else
   {
       i = sub_digit('D', 'x', i, c);
       number = number%5000;
   }
   }
   else 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 of the result is: ");
for (int j = 0; j < i; j++)
printf("%c", c[j]);
return 1;
}
int main()
{
   long int num1,num2;
   char again;
   int s;
clrscr();
   printf("Welcome to Roman Calculator . hail Caesar ");
   printf(" ............................................ ");
   printf(" ");
do
{
printf("Enter the first roman number(I,V,X,L,C,D,M) ");
   num1 = getRoman();
printf(" The First Number is : %ld ",num1);
printf(" ");
printf("Enter the Second roman number(I,V,X,L,C,D,M) ");
   num2 = getRoman();
printf(" The Second Number is: %ld ",num2);
printf(" ");
printf("Enter The Operation ");
ans=dooperation(num1,num2);
printf("The Result is in decimal form :%ld",ans);
s=printRoman(ans);
printf(" Press Q to Quit,any other key to continue");
again = getch();
printf(" ");
}while(again!='Q');
printf("Thanksfor playing! ");
getch();
return 0;
}
//code for converting Roman value into equvalant decimal number
long int getRoman()
{
   char rom[30];
   int a[30], l, i, k, dec,l1;
scanf("%s", &rom);
l =strlen(rom);
for(i = 0; i < l; i++)
{
switch (rom[i])
{
case 'I': a[i] = 1;
   break;
case 'V': a[i] = 5;
   break;
case 'X': a[i] = 10;
   break;
case 'L': a[i] = 50;
   break;
case 'C': a[i] = 100;
   break;
case 'D': dec = dec + 500;
   break;
case 'M': a[i] = 1000;
   break;
default : printf("Invalid choice");
   break;
}
}
k = a[l - 1];
for(i = l - 1; i > 0; i--)
{
if(a[i] > a[i - 1])
{
k = k - a[i - 1];
}
if(a[i] <= a[i - 1])
{
k = k + a[i - 1];
}
}
return k;
}
long int dooperation(long int num1,long int num2)
{
   char op;
   long int num3=0;
   scanf("%s",&op);
   switch(op)
   {
       case '+' :
               num3= num1+num2;
               printf("%ld %ld",num1,num2);
               printf(" Addition equivalent is %ld", num3);
               printf(" ");
               break;
       case '-' :
               num3 = num1-num2;
               printf("%ld %ld",num1,num2);
               printf(" Substraction equivalent is %ld", num3);
               printf(" ");
               break;
   case '*' :
               num3 = num1 * num2;
               printf(" Multiplication equivalent is %ld", num3);
               printf(" ");
               break;
   case '/' :
               num3 = num1/num2;
               printf(" Division equivalent is %ld", num3);
                   printf(" ");
   }
   return num3;
}