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