//** //CSE 121 //Roman Numerals //This program will take integers and convert them to Roman Numerals #include <stdio.h> #include <string.h> main() { int a,b,c,d,e; char string0[30] = ""; char string1[10] = "1"; char string2[10] = "2"; char string3[10] = "3"; char string4[10] = "4"; printf("\nPlease enter an integer. (Only 1 integer, between 0 - 9999):\n"); scanf("%d", &e); if (isdigit(e)) { printf("\nError: %d is not a digit.\n", e); return(0); } if (e < 0) { printf("\nError: You have entered an invalid number.\n\n"); return(0); } if (e > 9999) { printf("\nError: You have entered an invalid number.\n\n"); return(0); } printf("\n"); a = (e/1000)*1000; b = ((e/100)%10)*100; c = ((e/10)%10)*10; d = ((e/1)%10)*1; //Conversion to roman numerals happens here //If 0 print N if (a == 0 && b == 0 && c == 0 && d == 0) { printf("N"); char string1[] = "M"; } //Thousands column if (a == 1000) { printf("M"); char string1[] = "M"; } else if (a == 2000) { printf("MM"); char string1[] = "MM"; } else if (a == 3000) { printf("MMM"); char string1[] = "MMM"; } else if (a == 4000) { printf("MMMM"); char string1[] = "MMMM"; } else if (a == 5000) { printf("MMMMM"); char string1[] = "MMMMM"; } else if (a == 6000) { printf("MMMMMM"); char string1[] = "MMMMMM"; } else if (a == 7000) { printf("MMMMMMM"); char string1[] = "MMMMMMM"; } else if (a == 8000) { printf("MMMMMMMM"); char string1[] = "MMMMMMMM"; } else if (a == 9000) { printf("MMMMMMMMM"); char string1[] = "MMMMMMMMM"; } //Hundreds Column if (b == 100) { printf("C"); char string2[] = "C"; } else if (b == 200) { printf("CC"); char string2[] = "CC"; } else if (b == 300) { printf("CCC"); char string2[] = "CCC"; } else if (b == 400) { printf("CD"); char string2[] = "CD"; } else if (b ==500) { printf("D"); char string2[] = "D"; } else if (b == 600) { printf("DC"); char string2[] = "DC"; } else if (b == 700) { printf("DCC"); char string2[] = "DCC"; } else if (b ==800) { printf("DCCC"); char string2[] = "DCCC"; } else if (b == 900) { printf("CM"); char string2[] = "CM"; } //Tens Column if (c == 10) { printf("X"); char string3[] = "X"; } else if (c == 20) { printf("XX"); char string3[] = "XX"; } else if (c == 30) { printf("XXX"); char string3[] = "XXX"; } else if (c == 40) { printf("XL"); char string3[] = "XL"; } else if (c ==50) { printf("L"); char string3[] = "L"; } else if (c == 60) { printf("LX"); char string3[] = "LX"; } else if (c == 70) { printf("LXX"); char string3[] = "LXX"; } else if (c ==80) { printf("LXXX"); char string3[] = "LXXX"; } else if (c == 90) { printf("XC"); char string3[] = "XC"; } //Ones column if (d == 1) { printf("I"); char string4[] = "I"; } else if (d == 2) { printf("II"); char string4[] = "II"; } else if (d == 3) { printf("III"); char string4[] = "III"; } else if (d == 4) { printf("IV"); char string4[] = "IV"; } else if (d == 5) { printf("V"); char string4[] = "V"; } else if (d == 6) { printf("VI"); char string4[] = "VI"; } else if (d == 7) { printf("VII"); char string4[] = "VII"; } else if (d == 8) { printf("VIII"); char string4[] = "VII"; } else if (d == 9) { printf("IX"); char string4[] = "IX"; } printf("\n\n"); printf("%s\n", string1); printf("%s\n", string2); printf("%s\n", string3); printf("%s\n", string4); //char *strcat(string0,string1); //char *strcat(string0,string2); //char *strcat(string0,string3); //char *strcat(string0,string4); //printf("%s", string0); //Print results to screen //printf("This result will be logged in the file roman_numerals.txt\n"); // Identify, open, append, and close output file //FILE* output_file; //output_file = fopen("roman_numerals.txt", "a"); //fprintf(output_file,"The Roman Numeral value of %i is %s. \n",e,string0); //fclose(output_file); return(0); }
I'm having problems on line 61, 67, 72, etc. I cannot get it to write the thing I have entered to the string. It clean compiles, I just cannot get it to write to the string.
What I want it to do: Print the conversion to the string & store that value in it's respective string. So for example, 1000 would output "M" to the screen and store "M" in string1.
Thank you in advance!
Output:
Please enter an integer. (Only 1 integer, between 0 - 9999):
1000
M
1
2
3
4