Código de PHP - Conversión de número decimales a romanos

Imágen de perfil

Conversión de número decimales a romanosgráfica de visualizaciones


PHP

Publicado el 14 de Febrero del 2002 por Administrador
13.553 visualizaciones desde el 14 de Febrero del 2002. Una media de 21 por semana
Función para convertir números decimales a romanos

Versión 1

Publicado el 14 de Febrero del 2002gráfica de visualizaciones de la versión: Versión 1
13.554 visualizaciones desde el 14 de Febrero del 2002. Una media de 21 por semana
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/* ------------------------------------------------------- */
/* -- FUNCIÓN QUE CONVIERTE NUMEROS DECIMALES A ROMANOS -- */
/* --------- http://www.lawebdelprogramador.com ---------- */
/* --------------------------------------------------------*/
 
function decimal_romano($numero)
{
	$numero=floor($numero);
	if($numero<0)
	{
		$var="-";
		$numero=abs($numero);
	}
	# Definición de arrays
	$numerosromanos=array(1000,500,100,50,10,5,1);
	$numeroletrasromanas=array("M"=>1000,"D"=>500,"C"=>100,"L"=>50,"X"=>10,"V"=>5,"I"=>1);
	$letrasromanas=array_keys($numeroletrasromanas);
 
	while($numero)
	{
		for($pos=0;$pos<=6;$pos++)
		{
			$dividendo=$numero/$numerosromanos[$pos];
			if($dividendo>=1)
			{
				$var.=str_repeat($letrasromanas[$pos],floor($dividendo));
				$numero-=floor($dividendo)*$numerosromanos[$pos];
			}
		}
	}
	$numcambios=1;
	while($numcambios)
	{
		$numcambios=0;
		for($inicio=0;$inicio<strlen($var);$inicio++)
		{
			$parcial=substr($var,$inicio,1);
			if($parcial==$parcialfinal&&$parcial!="M")
			{
				$apariencia++;
			}else{
				$parcialfinal=$parcial;
				$apariencia=1;
			}
			# Caso en que encuentre cuatro carácteres seguidos iguales.
			if($apariencia==4)
			{
				$primeraletra=substr($var,$inicio-4,1);
				$letra=$parcial;
				$sum=$primernumero+$letternumero*4;
				$pos=busqueda($letra,$letrasromanas);
				if($letrasromanas[$pos-1]==$primeraletra)
				{
					$cadenaant=$primeraletra.str_repeat($letra,4);
					$cadenanueva=$letra.$letrasromanas[$pos-2];
				}else{
					$cadenaant=str_repeat($letra,4);
					$cadenanueva=$letra.$letrasromanas[$pos-1];
				}
				$numcambios++;
				$var=str_replace($cadenaant,$cadenanueva,$var);
			}
		}
	}
	return $var;
}
 
function busqueda($cadenanueva,$array)
{
	foreach($array as $contenido)
	{
		if($contenido==$cadenanueva)
		{
			return $pos;
		}
		$pos++;
	}
}



Comentarios sobre la versión: Versión 1 (0)


No hay comentarios
 

Comentar la versión: Versión 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios

http://lwp-l.com/s93