Ver Mensaje Individual
  #7 (permalink)  
Antiguo 04/11/2010, 17:26
Avatar de OWNED91
OWNED91
 
Fecha de Ingreso: abril-2010
Ubicación: Guatemala
Mensajes: 34
Antigüedad: 14 años
Puntos: 0
Respuesta: Ayuda Romanos a Arabigos

Gracias a todos por la ayuda, pero ya lo logre hacer, dejo la funcion por si a alguien mas le pueda servir saludos :)
El programa tiene un limite hasta el numero arabigo 3999, que en romano es a MMMCMXCIX

Código PHP:
Ver original
  1. function romanoArabigo($number){
  2.     $number=strtoupper($number);
  3.             $comparei=(substr_count($number,"IIII"));
  4.             $comparev=(substr_count($number,"VVVV"));
  5.             $comparex=(substr_count($number,"XXXX"));
  6.             $comparel=(substr_count($number,"LLLL"));
  7.             $comparec=(substr_count($number,"CCCC"));
  8.             $compared=(substr_count($number,"DDDD"));
  9.             $comparem=(substr_count($number,"MMMM"));
  10.             if($comparei>=1 || $comparev>=1 || $comparex>=1 || $comparel>=1 || $comparec>=1 || $compared>=1 || $comparem>=1){
  11.               echo("Recuerde no puede introducir el mismo caracter mas de 3 veces seguidas");  
  12.             }else{
  13.             $tam=strlen($number)-1;
  14.             $number=strtoupper($number);
  15.             $numresult=0;
  16.             $roman="";
  17.             $ctr=1;
  18.             $vartemp="";
  19.            
  20.              
  21.                 while($cont<=$tam){
  22.                 $roman=substr($number, $cont, 1);
  23.                 switch ($roman)
  24.                 {
  25.                     case "I":{
  26.                     $conti++;
  27.                     $ctr=1;
  28.                     $vartemp=substr($number, $cont+1, 1);
  29.                     if((strcmp($vartemp, "V")==0)||(strcmp($vartemp, "X")==0)){
  30.                     $conti--;
  31.                         $conti+=3;
  32.                              $numresult=$numresult-1;
  33.                             }
  34.                             else
  35.                             {
  36.                                 $numresult=$numresult+1;
  37.                             }
  38.                     break;}
  39.                     case "V":{
  40.                         $contv++; $numresult+=5; $ctr=1;
  41.                         break;}
  42.                     case "X":{
  43.                         $ctr=1;
  44.                         $contx++;
  45.                     $vartemp=substr($number, $cont+1, 1);
  46.                     if((strcmp($vartemp, "L")==0)||(strcmp($vartemp, "C")==0)){
  47.                         $contx--;
  48.                             $contx+=3;
  49.                                 $numresult=$numresult-10;
  50.                             }
  51.                             else
  52.                             {
  53.                                 $numresult=$numresult+10;
  54.                             }
  55.                     break;}
  56.                     case "L":{
  57.                         $contl++; $numresult+=50; $ctr=1;
  58.                         break;}
  59.                     case "C":{
  60.                         $ctr=1;
  61.                         $contc++;
  62.                     $vartemp=substr($number, $cont+1, 1);
  63.                     if((strcmp($vartemp, "D")==0)||(strcmp($vartemp, "M")==0)){
  64.                         $contc--;
  65.                         $contc+=3;
  66.                         $numresult=$numresult-100;
  67.                             }
  68.                             else
  69.                             {
  70.                                 $numresult=$numresult+100;
  71.                             }
  72.                     break;}
  73.                     case "D":{
  74.                         $contd++; $numresult+=500;
  75.                          break;}
  76.                     case "M":{
  77.                     $contm++;
  78.                     $numresult=$numresult+1000;
  79.                     break;}
  80.                     default:{
  81.                         break;
  82.                         }
  83.                 }
  84.                 $cont++;
  85.                 }
  86.                
  87.                 echo("El Numero Romano que ingreso en arabigo es : ".$numresult."<br>");
  88. }
  89. }