| Redpic 
 
 
 Joined: 18 Dec 2005
 Posts: 5
 Location: Spain
 
 
			      
 
 | 
			
				| Int8 to Roman Numbers (string) function. |  
				|  Posted: Wed Oct 11, 2006 7:27 am |   |  
				| 
 |  
				| First: declarations and function: 
 
  	  | Code: |  	  | #include <string.h>
 ...
 const int8 Numeros[] = {  1,    4,   5,    9,  10,   40,  50,   90, 100,  400, 500,  900, 1000};
 ...
 //-----------------------------------------------------------------------------
 
 void dec_to_roman(int8 LI, char* ptr){
 
 int i;
 char tmp[12];
 char* ptmp = (char*) tmp;
 strcpy(ptr,"");
 // transformo  de la tabla Arábiga a la Románica Latinitatis
 // {  1,    4,   5,    9,  10,   40,  50,   90, 100,  400, 500,  900, 1000};
 // { 'I', 'IV', 'V', 'IX', 'X', 'XL', 'L', 'XC', 'C', 'CD', 'D', 'CM', 'M'};
 for(i=12;i!=255;i--){
 while(LI >= Numeros[i]){
 LI = LI - Numeros[i];
 Switch(i){
 case 0:
 strcpy(ptmp,"I\0");
 break;
 case 1:
 strcpy(ptmp,"IV\0");
 break;
 case 2:
 strcpy(ptmp,"V\0");
 break;
 case 3:
 strcpy(ptmp,"IX\0");
 break;
 case 4:
 strcpy(ptmp,"X\0");
 break;
 case 5:
 strcpy(ptmp,"XL\0");
 break;
 case 6:
 strcpy(ptmp,"L\0");
 break;
 case 7:
 strcpy(ptmp,"XC\0");
 break;
 case 8:
 strcpy(ptmp,"C\0");
 break;
 case 9:
 strcpy(ptmp,"CD\0");
 break;
 case 10:
 strcpy(ptmp,"D\0");
 break;
 case 11:
 strcpy(ptmp,"CM\0");
 break;
 case 12:
 strcpy(ptmp,"M\0");
 break;
 }
 ptr=strcat(ptr,ptmp);
 }
 }
 }
 //-----------------------------------------------------------------------------
 
 | 
 
 Second, a use example:
 
 
  	  | Code: |  	  | int8  H=128;
 char H_in_RomanusNumericum[12];
 ...
 dec_to_roman(H, (char*) H_in_RomanusNumericum);
 printf("%s",H_in_RomanusNumericum);
 ...
 
 | 
 
 Now H_in_RomanusNumericum is equal to "CXXVIII\0"
 
 A curiosous example: The Pic Roman Clock
 
 
 
  |  |