[STOCK] num_to_roman / roman_to_num
#1
Dos simples stocks que sirven para convertir un número entero a romano y viceversa - convertido a Pawn desde las fuentes que dejaré al final del post.
El número debe ir entre 1 y 3999, porque después del 3999 se utiliza caracteres especiales que no son soportados.

num_to_roman: Convierte un número entero a romano.
Devuelve la longitud del número romano generado, para números invalidos devolverá cero (0).
Código PHP:
stock num_to_romannumroman[], len )
{
    if( 
num || num 3999 )
        return 
0;
    
    static const 
intnums[ ] = { 100090050040010090504010954};
    static const 
romnums[ ][ ] = { "M""CM""D""CD""C""XC""L""XL""X""IX""V""IV""I" }; 

    new 
pos;
    
    for( new 
isizeof intnums && pos len && numi++ )
    {
        while( 
num >= intnums[i] && pos len )
        {
            
num -= intnums];
            
pos += copyroman[pos], 2romnums[i] );
        }
    }
    
    return 
pos;


roman_to_num: Convierte un número romano a entero.
Devuelve el número entero generado, para caracteres invalidos devolverá cero (0).
Código PHP:
stock roman_to_num( const roman[] )
{
    
#define int(%1,%2) \
    
switch( %) \
    { \
        case 
'I': %1;    \
        case 
'V': %5;    \
        case 
'X': %10;   \
        case 
'L': %50;   \
        case 
'C': %100;  \
        case 
'D': %500;  \
        case 
'M': %1000; \
        default : return 
0;  \
    }
    
    new 
jk;
    new 
num;
    
    for( new 
strlen(roman) - 1> -1i-- )
    {
        
introman[i], )
        
num += ? -j;
        
j;
    }
    
    return 
num;


Ejemplo de uso:
Código PHP:
#include <amxmodx>

public plugin_init( )
{
    
register_plugin"Roman numerals""1.0""Milashkasiya" )
    
register_srvcmd"test""srvcmd_test" );
}

public 
srvcmd_testid )
{
    new 
szRomanNum16 ];
    for( new 
1<= 298i++ )
    {
        
num_to_romaniszRomanNumcharsmax(szRomanNum) );
        
server_print"%i -> %s"roman_to_num(szRomanNum), szRomanNum );
    }
}


stock num_to_romannumroman[], len )
{
    if( 
num || num 3999 )
        return 
0;
    
    static const 
intnums[ ] = { 100090050040010090504010954};
    static const 
romnums[ ][ ] = { "M""CM""D""CD""C""XC""L""XL""X""IX""V""IV""I" }; 

    new 
pos;
    
    for( new 
isizeof intnums && pos len && numi++ )
    {
        while( 
num >= intnums[i] && pos len )
        {
            
num -= intnums];
            
pos += copyroman[pos], 2romnums[i] );
        }
    }
    
    return 
pos;
}

stock roman_to_num( const roman[] )
{
    
#define int(%1,%2) \
    
switch( %) \
    { \
        case 
'I': %1;    \
        case 
'V': %5;    \
        case 
'X': %10;   \
        case 
'L': %50;   \
        case 
'C': %100;  \
        case 
'D': %500;  \
        case 
'M': %1000; \
        default : return 
0;  \
    }
    
    new 
jk;
    new 
num;
    
    for( new 
strlen(roman) - 1> -1i-- )
    {
        
introman[i], )
        
num += ? -j;
        
j;
    }
    
    return 
num;


Fuente: Encode | Decode
Hi [R]ak CrabCrab
Responder
#2
Muy bueno Proud
Responder
#3
Esta muy bueno, me gusto .

Pero cual seria su utilidad ? Genius
Responder
#4
(04/04/2015, 03:59 AM)Ipolito escribió: Esta muy bueno, me gusto .

Pero cual seria su utilidad ? Genius

convertir números, a romanos Genius


Muchas gracias Srita. lo utilizare xd
Responder
#5
Esta muy bueno CutecryProud
Responder
#6
(04/04/2015, 03:59 AM)Ipolito escribió: Esta muy bueno, me gusto .

Pero cual seria su utilidad ? Genius

https://amxmodx-es.com/Thread-Mostrar-numero-como-texto
Responder
#7
(04/04/2015, 02:35 PM)matrix123 escribió:
(04/04/2015, 03:59 AM)Ipolito escribió: Esta muy bueno, me gusto .

Pero cual seria su utilidad ? Genius

https://amxmodx-es.com/Thread-Mostrar-numero-como-texto

para que lo mandas a otro thread si en este mismo lo explica? Genius

Cita:Dos simples stocks que sirven para convertir un número entero a romano y viceversa
Responder
#8
(04/04/2015, 02:39 PM)ErikMav94 escribió:
(04/04/2015, 02:35 PM)matrix123 escribió:
(04/04/2015, 03:59 AM)Ipolito escribió: Esta muy bueno, me gusto .

Pero cual seria su utilidad ? Genius

https://amxmodx-es.com/Thread-Mostrar-numero-como-texto

para que lo mandas a otro thread si en este mismo lo explica? Genius

Cita:Dos simples stocks que sirven para convertir un número entero a romano y viceversa

Preguntó la utilidad, ahi le pasé para que vea la razón de este aporte.
Responder
#9
(04/04/2015, 04:59 AM)FloresMagon escribió:
(04/04/2015, 03:59 AM)Ipolito escribió: Esta muy bueno, me gusto .

Pero cual seria su utilidad ? Genius

convertir números, a romanos Genius


Muchas gracias Srita. lo utilizare xd

Ya se maquinola, a lo que voy, quien lo usaria en el cs 1.6 ? osea, lo veo inutil, pero esta bueno Yao ming
Responder
#10
Muchas gracias, justo lo que buscaba
Responder
#11
Jumm, esta bueno, aunque dudo que muchos lo usen a menos que enseñen historia en su servidor Roflmao

Pero bueno, esta bien que exista no? Thats what she said
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)