summaryrefslogtreecommitdiff
path: root/reference/C/CONTRIB/SNIP/roman.c
diff options
context:
space:
mode:
Diffstat (limited to 'reference/C/CONTRIB/SNIP/roman.c')
-rwxr-xr-xreference/C/CONTRIB/SNIP/roman.c97
1 files changed, 97 insertions, 0 deletions
diff --git a/reference/C/CONTRIB/SNIP/roman.c b/reference/C/CONTRIB/SNIP/roman.c
new file mode 100755
index 0000000..b65d6a4
--- /dev/null
+++ b/reference/C/CONTRIB/SNIP/roman.c
@@ -0,0 +1,97 @@
+/*
+ *
+ * ROMAN.C - Converts integers to Roman numerals
+ *
+ * Written by: Jim Walsh
+ *
+ * Compiler : Microsoft QuickC v2.5
+ *
+ * This Program Is Released To The Public Domain
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+int main( int argc, char *argv[] )
+{
+ int value, dvalue;
+ char roman[80];
+ roman[0] = '\0';
+ if( argc == 2 )
+ value = atoi( argv[1] );
+ else
+ {
+ printf( "\nEnter an integer value: " );
+ scanf( "%d", &value );
+ }
+ dvalue = value;
+ while( value >= 1000 )
+ {
+ strcat( roman, "M" );
+ value -= 1000;
+ }
+ if( value >= 900 )
+ {
+ strcat( roman, "CM" );
+ value -= 900;
+ }
+ while( value >= 500 )
+ {
+ strcat( roman, "D" );
+ value -= 500;
+ }
+ if( value >= 400 )
+ {
+ strcat( roman, "CD" );
+ value -= 400;
+ }
+ while( value >= 100 )
+ {
+ strcat( roman, "C" );
+ value -= 100;
+ }
+ if( value >= 90 )
+ {
+ strcat( roman, "XC" );
+ value -= 90;
+ }
+ while( value >= 50 )
+ {
+ strcat( roman, "L" );
+ value -= 50;
+ }
+ if( value >= 40 )
+ {
+ strcat( roman, "XL" );
+ value -= 40;
+ }
+ while( value >= 10 )
+ {
+ strcat( roman, "X" );
+ value -= 10;
+ }
+ if( value >= 9 )
+ {
+ strcat( roman, "IX" );
+ value -= 9;
+ }
+ while( value >= 5 )
+ {
+ strcat( roman, "V" );
+ value -= 5;
+ }
+ if( value >= 4 )
+ {
+ strcat( roman, "IV" );
+ value -= 4;
+ }
+ while( value > 0 )
+ {
+ strcat( roman, "I" );
+ value--;
+ }
+ printf( "\n%d = %s\n", dvalue, roman );
+ return(0);
+}