ScholarMatic | 24/7 Homework Help

ScholarMatic Will Help You Write Your Essays and Term Papers

Answered » You can buy a ready-made answer or pick a professional tutor to order an original one.

Hello.txt file through my code using stdin.

by | Nov 28, 2023 | engineering

Hello. I need help trying to read a .txt file through my code using stdin. Right now I have the user enter their own input so they can add 2 Roman numerals together to give an output of a Roman Numeral. For example, if a user entered III for the first line and VI for the second line, it will equal the sum of IX. My code is able to add Roman Numerals correctly. However I need it where a user can enter a .txt file with the same Roman numerals; III and VI and have it display the sum using stdin and fgets. Here is the code below:

#include<stdio.h>

#include<string.h>

// List all of the Roman Numerals with their values

int val(char r){

if (r == ‘I’)

   return 1;

if (r == ‘V’)

   return 5;

if (r == ‘X’)

   return 10;

if (r == ‘L’)

   return 50;

if (r == ‘C’)

   return 100;

if (r == ‘D’)

   return 500;

if (r == ‘M’)

   return 1000;

return -1;

}

// This function will change the Roman Numerals into Numbers

int romanToDecimal(char arr[]){

int res = 0;

int i,len = strlen(arr);

for (i=0; i<len; i++){

   int s1 = val(arr[i]);

   if (i+1 < len){

       int s2 = val(arr[i+1]);

   if (s1 >= s2)

       res = res + s1;

   else{

       res = res + s2 – s1;

       i++;

   }

}

   else{

       res = res + s1;

       i++;

   }

}

return res;

}

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){

int j;

for (j = 0; j < n; j++)

   c[i++] = ch;

return i;

}

// Function will turn Numbers into Roman Numerals

void printInRoman(int num){

char c[10001];

int i = 0;

   while (num != 0){

       if (num >= 1000){

           i = digit(‘M’, num/1000, i, c);

           num = num%1000;

   }

       else if (num >= 500){

           if (num < 900){

               i = digit(‘D’, num/500, i, c);

               num = num%500;

           }

           else{

               i = sub_digit(‘C’, ‘M’, i, c);

               num = num%100 ;

           }

       }

       else if (num >= 100){

           if (num < 400){

               i = digit(‘C’, num/100, i, c);

               num = num%100;

           }

           else{

               i = sub_digit(‘C’,’D’,i,c);

               num = num%100;

           }

       }

       else if (num >= 50 ){

           if (num < 90){

               i = digit(‘L’, num/50,i,c);

               num = num%50;

           }

           else{

               i = sub_digit(‘X’,’C’,i,c);

               num = num%10;

           }

       }

       else if (num >= 10){

           if (num < 40){

               i = digit(‘X’, num/10,i,c);

               num = num%10;

           }

           else{

               i = sub_digit(‘X’,’L’,i,c);

               num = num%10;

           }

       }

       else if (num >= 5){

           if (num < 9){

               i = digit(‘V’, num/5,i,c);

               num = num%5;

           }

           else{

               i = sub_digit(‘I’,’X’,i,c);

               num = 0;

           }

       }

       else if (num >= 1){

           if (num < 4){

               i = digit(‘I’, num,i,c);

               num = 0;

           }

           else{

               i = sub_digit(‘I’, ‘V’, i, c);

               num = 0;

           }

       }

   }

int j;

for (j = 0; j < i; j++)

   printf(“%c”, c[j]);

   printf(“n”);

}

int main(int argc, char *argv[]){

   char arr1[100];

   char arr2[100];

   char fileName[100];

   printf(“Enter file namen”);

   scanf(“%s”,fileName);

   FILE* file = fopen(fileName, “r”);

   fgets(arr1, 100, file);

   fgets(arr2, 100, file);

   int val1 = romanToDecimal(arr1);

   int val2 = romanToDecimal(arr2);

   printInRoman(val1+val2);

return 0;

}

ScholarMatic: Explanation & Answer

Your ready answer from a verified tutor is just a click away for as little as $14.99


  

Click Order Now to get 100% Original Answer Customized to your instructions!

HOME TO CERTIFIED WRITERS

Why Place An Order With Us?

  • Certified Editors
  • 24/7 Customer Support
  • Profesional Research
  • Easy to Use System Interface
  • Student Friendly Pricing

Have a similar question?

PLAGIRAISM FREE PAPERS

All papers we provide are well-researched, properly formatted and cited.

TOP QUALITY

All papers we provide are well-researched, properly formatted and cited.

HIGHLY SECURED

All papers we provide are well-researched, properly formatted and cited.

ScholarMatic: Get Started

Assignment Writing Service

Feel safe and secure when placing an order on our portal!
Fruitful cooperation begins with solid guarantees, and we are professional enough to promise perfect results. Let’s get it started!