Ver Mensaje Individual
  #3 (permalink)  
Antiguo 23/05/2005, 23:38
Avatar de Jorgemen
Jorgemen
 
Fecha de Ingreso: mayo-2005
Ubicación: Perú
Mensajes: 322
Antigüedad: 19 años, 6 meses
Puntos: 1
Código PHP:
<?php 
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);
}

?>