Script para Gerar Numeros Romanos

O script abaixo foi resultado de um entrevista para um fabrica de software a qual pediu para gera
numeros romanos a partir de números decimais.
Aqui no código vc poder inserir números de até três casas decimais 5000 acima de zero(não existe
numero romano igual a zero)
A logica é simples eu pego os números pela divisão sucessiva e armazeno em uma variável ao fim
concateno na expressão final.
Espero ter ajudar com este código!

<?php
$array1 = array(1=>"I",2=>"II",3=>"III",4=>"IV",5=>"V",6=>"VI",7=>"VII",8=>"VIII",9=>"XI", 10=>"X");
$array2 = array(10=>"X",20=>"XX", 30=>"XXX", 40=>"XL", 50=>"L", 60=>"LX", 70=>"LXX", 80=>"LXXX", 90=>"XC", 100=>"C");
$array3 = array(100=>"C", 200=>"CC", 300=>"CCC", 400=>"CD", 500=>"D", 600=>"DC", 700=>"DCC", 800=>"DCCC", 900=>"CM", 1000=>"M");
$array4 = array(1000=>"M", 2000=>"MM", 3000=>"MMM", 4000=>"MV", 5000=>"V");


echo "<form method='post' >";
echo "<label> Insira um numero: </label>";
echo "<input name='numero' type='text'>";
echo "<br><input name='enviar' type='submit' value='enviar' >";
echo "</form>";

if( $_POST["numero"]!=null){
//validar se o numero é maior que zero!
if($_POST["numero"] > 0 && $_POST["numero"] <=10){

echo "<br>Numero inserido: ".$_POST["numero"];;
echo "<br>Numero Encontrado: ".$array1[$_POST["numero"]];

}
else if($_POST["numero"] > 10 && $_POST["numero"] <= 100){
echo "<br>Numero inserido: ".$_POST["numero"];

$numero = floor($_POST["numero"]/10)*10;
$resultado1 = $array2[$numero];

$numero = $_POST["numero"]%10;
if($numero != null)
$resultado2 = $array1[$numero];
else
$resultado2 = "";

echo "<br>Numero Encontrado: ".$resultado1.$resultado2;

}
else if($_POST["numero"] >100 && $_POST["numero"] <=1000){

echo "<br>Numero inserido: ".$_POST["numero"];
//primero numero
$numero = floor($_POST["numero"]/100)*100;
$resultado1 = $array3[$numero];

//segundo numero
$numero = floor($_POST["numero"]/100)*10;
$resultado2 = $array2[$numero];

//terceiro numero
$numero = $_POST["numero"]%10;
if($numero != null)
$resultado3 = $array1[$numero];
else
$resultado3 = "";

echo "<br>Numero Encontrado: ".$resultado1.$resultado2.$resultado3;

}
else if($_POST["numero"] > 1000 && $_POST["numero"] <= 5000){
echo "<br>Numero inserido: ".$_POST["numero"];
//primeiro numero
$numero = floor($_POST["numero"]/1000)*1000;
$resultado1 = $array4[$numero];

//segundo numero
$numero = floor(($_POST["numero"]%1000)/100)*100;

if($numero != null)
$resultado2 = $array3[$numero];
else
$resultado2 = "";


//terceiro numero
$numero = floor( floor($_POST["numero"]%1000)/100)*100/10;

if($numero != null)
$resultado3 = $array2[$numero];
else
$resultado3 = "";


//quarto numero
$numero = $_POST["numero"]%10;
if($numero != null)
$resultado4 = $array1[$numero];
else
$resultado4 = "";

echo "<br>Numero Encontrado: ".$resultado1.$resultado2.$resultado3.$resultado4;
}
else
echo "somente numero inteiro, positivos e maiores que zero e menor que 5000!";
}

?>


 

Sobre Alex Jose Silva

Mochileiro, Amante do MangueBit e apaixonado por TI.. Sou Alex, um sobrevivente!

Deixe um comentário