Hello. I need help trying to read a .txt file through my code using stdin. Right
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
#include
// 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
= 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; }