Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/05/2005, 23:31
Avatar de Jorgemen
Jorgemen
 
Fecha de Ingreso: mayo-2005
Ubicación: Perú
Mensajes: 322
Antigüedad: 18 años, 11 meses
Puntos: 1
lenguajes formales indice de una palabra

Jorge Mendoza
[/PHP]
//... CLASE FORMALES
session_register('alfabeto');
session_register('palabra');
class formales
{
//_____________ATRIBUTOS__________________
var $alfabeto;// arreglo
var $palabra;
var $m=0;
var $k=0;
//_________________________________________
var $nAlfabeto=0;
var $nPalabra=0;
//________________METODOS____________________
function procesar($edAlfabeto,$edPalabra)
{
if(($edAlfabeto=="")and($edPalabra==""))
return false;
else
{
if($edAlfabeto<>"")
{
$n=strlen($edAlfabeto);
$ultimoCaracter=",";
for ($i=0;$i<$n;$i++)
{
$letra=$edAlfabeto[$i];
if(($letra<>",")and($ultimoCaracter==","))
{
$this->alfabeto[$this->nAlfabeto]=$letra;
$this->nAlfabeto++;
$ultimoCaracter="letra";
}
elseif($letra<>",")
{
$this->nAlfabeto--;
$letraAnterior=$this->alfabeto[$this->nAlfabeto];
$union="$letraAnterior$letra";
$this->alfabeto[$this->nAlfabeto]=$union;
$this->nAlfabeto++;
$ultimoCaracter="letra";
}
else
$ultimoCaracter=",";
}//fin for
}//fin if($edAlfabeto<>"")
if($edPalabra<>"")
{
$n=strlen($edPalabra);
$ultimoCaracter=",";
for ($i=0;$i<$n;$i++)
{
$letra=$edPalabra[$i];
if(($letra<>",")and($ultimoCaracter==","))
{
$this->palabra[$this->nPalabra]=$letra;
$this->nPalabra++;
$ultimoCaracter="letra";
}
elseif($letra<>",")
{
$this->nPalabra--;
$letraAnterior=$this->palabra[$this->nPalabra];
$union="$letraAnterior$letra";
$this->palabra[$this->nPalabra]=$union;
$this->nPalabra++;
$ultimoCaracter="letra";
}
else
$ultimoCaracter=",";
}//fin for
}//elseif($edPalabra<>"")
return true;
}//fin else
}
function posicionEnAlfabeto($letra)
{
$encontro=false;
$i=0;
while ((!$encontro)and($i<$this->nAlfabeto))
{
if($this->alfabeto[$i]==$letra)
$encontro=true;
else
$i++;
}
if ($encontro)
return $i;
else
return -1;
}
function potencia($b,$e)
{
$producto=1;
for ($i=0;$i<$e;$i++)
$producto=$producto*$b;
return $producto;
}
function hallarIndice()
{
$a=$_SESSION['alfabeto'];
$p=$_SESSION['palabra'];
$m=count($a);//longitud del alfabeto
$k=count($p);//longitud de la palabra
$suma1=($this->potencia($m,$k)-1)/($m-1);
$suma2=0;
for($j=0;$j<=$k-1;$j++)
{
$aux=$k-(1+$j);
$pos=$this->posicionEnAlfabeto($p[$j]);
if($pos==-1)
{
$suma2=-1;
$j=$k;
}
else
$suma2=$suma2+($pos*$this->potencia($m,$aux));
}
$this->m=$m;
$this->k=$k;
if($suma2==-1)
return -1;
else
$indice=$suma1+$suma2;
return $indice;
}
}
$n=new formales;
if ($n->procesar($edAlfabeto,$edPalabra))
{
$alfabeto=$n->alfabeto;
$palabra=$n->palabra;
$indice=$n->hallarIndice();
include("interfaz.php");
$a=new interfaz;
$a->verIU($indice,$n->m,$n->k);
}
else// significa que s la primera vez que se entra al programa
{
include("interfaz.php");
$a=new interfaz;
$a->verIU("",0,0);
}

?>

[/PHP]