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

Write a complete C program that reads several integer numbers from a file called

ID: 3868866 • Letter: W

Question

Write a complete C program that reads several integer numbers from a file called Numbers.txt, store them in an array, then the program converts each number into its roman equivalent. Your program should define and call a function called roman_equivalent that takes a number as input and prints the roman equivalent of that number on screen.

Hint 1: The file Numbers.txt can contain at most 250 numbers.

Hint 2: The function prototype is void roman_equivalent (int); The following table shows the roman equivalents of decimal numbers:

Examples: Roman equivalent of 13 is XIII, 1*10 + 3*1 = 13 = XIII Roman equivalent of 1988 is MDCCCCLXXXVIII, since 1988 contains 1*1000 M 1988 contains 1*500 D 1988 contains 4*100 CCCC 1988 contains 1*50 L 1988 contains 3*10 XXX 1988 contains 1*5 V 1988 contains 3*1 III Roman equivalent of 1515 is MDXV.

Decimal Roman 5 10 50 100 500 1000

Explanation / Answer

The desired c program is given below:

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
char romNum[10000];
int i=0;
void romanPrefix(char c1,char c2){
    romNum[i++] = c1;
    romNum[i++] = c2;
}

void romanSuffix(char c,int n){
    int j;
    for(j=0;j<n;j++)
         romNum[i++] = c;

}

//function to get the roman value
void roman_equivalent (int number)
{
   int j;
    printf("%d ", number);
    if(number <= 0){
         printf("Invalid number");
         getch();
         return 0;
    }

    while(number != 0){

         if(number >= 1000){
             romanSuffix('M',number/1000);
             number = number - (number/1000) * 1000;
         }
         else if(number >=500){
             if(number < (500 + 4 * 100)){
                 romanSuffix('D',number/500);
                 number = number - (number/500) * 500;
             }
             else{
                 romanPrefix('C','M');
                 number = number - (1000-100);
             }
         }
         else if(number >=100){
             if(number < (100 + 3 * 100)){
                 romanSuffix('C',number/100);
                 number = number - (number/100) * 100;
             }
             else{
                 romanPrefix('L','D');
                 number = number - (500-100);
             }
         }
         else if(number >=50){
             if(number < (50 + 4 * 10)){
                 romanSuffix('L',number/50);
                 number = number - (number/50) * 50;
             }
             else{
                 romanPrefix('X','C');
                 number = number - (100-10);
             }
         }
         else if(number >=10){
             if(number < (10 + 3 * 10)){
                 romanSuffix('X',number/10);
                 number = number - (number/10) * 10;
             }
             else{
                 romanPrefix('X','L');
                 number = number - (50-10);
             }
         }
         else if(number >=5){
             if(number < (5 + 4 * 1)){
                 romanSuffix('V',number/5);
                 number = number - (number/5) * 5;
             }
             else{
                 romanPrefix('I','X');
                 number = number - (10-1);
             }
         }
         else if(number >=1){
             if(number < 4){
                 romanSuffix('I',number/1);
                 number = number - (number/1) * 1;
             }
             else{
                 romanPrefix('I','V');
                 number = number - (5-1);
             }
         }
    }

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

int main()
{
   // get the data from the file and store it in the array
   FILE *myFile;  
   int* numbers = (int*)calloc(250, sizeof(int));
   int i = 0;
   int num;
   do
   {  
       myFile = fopen("Numbers.txt", "r");
      
       if(myFile == NULL)
       {
           printf("Error in file");
           return 0;
       }
   }
   while(myFile == NULL);
      
   while(fgetc(myFile) != EOF)
   {
       fscanf(myFile, "%d,", &numbers[i]);
       roman_equivalent(numbers[i]);
       i++;
   }

}

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