Autor Tema: [Clase] Ecuaciones de primer grado  (Leído 1765 veces)

Desconectado Marcus

  • PHPer@
  • **
  • Mensajes: 72
  • Karma: 1
  • Sexo: Masculino
  • Nuev@ PHPer@
    • Ver Perfil
[Clase] Ecuaciones de primer grado
« en: 14 de Abril de 2011, 00:02:24 am »
Hola chicos!

Viendo éste tema me ha entrado interés en hacer algo así, finalmente después de 3 días programando he terminado.

Sin más, el código:

<?php
class Ecuacion{
    private 
$Terminos = array();
    public 
$Resultado;
    public 
$PrimerMiembroA;
    public 
$SegundoMiembroA;
    public 
$PrimerMiembroC;
    public 
$SegundoMiembroC;
    public function 
__construct($PrimerMiembro$SegundoMiembro){
        
$PrimerMiembro str_replace(" """$PrimerMiembro);
        
$SegundoMiembro str_replace(" """$SegundoMiembro);
        if(
$PrimerMiembro{0} != "-" && $PrimerMiembro{0} != "+"){
            
$PrimerMiembro "+".$PrimerMiembro;
        }
        if(
$SegundoMiembro{0} != "-" && $SegundoMiembro{0} != "+"){
            
$SegundoMiembro "+".$SegundoMiembro;
        }
        
$this->PrimerMiembroA $PrimerMiembro;
        
$this->SegundoMiembroA $SegundoMiembro;
    }
    private function 
ProcesarTerminos($Miembro$LadoMiembro$Signo){
        switch(
$Signo){
            case 
"+":
                
$SignoContrario "-";
                
$SignoArray 1;
                break;
            case 
"-":
                
$SignoContrario "+";
                
$SignoArray 0;
                break;
        }
        
$array explode($Signo$Miembro);
        foreach(
$array as $explode){
            if(
strstr($explode$SignoContrario) == true){
                
$pos strpos($explode$SignoContrario);
                
$delete substr($explode$pos);
                
$explode str_replace($delete""$explode);
            }
            if(
$explode{0} == "x"){
                
$explode "1x";
            }
            if(
$explode != ""){
                if(
stristr($explode"x") == true){
                    
$this->Terminos[] = array("valor" =>intval(str_ireplace("x"""$explode)), "variable" => 1,"signo" => $SignoArray"miembro" => $LadoMiembro);
                } else {
                    
$this->Terminos[] = array("valor" => intval($explode),"variable" => 0,"signo" => $SignoArray,"miembro" => $LadoMiembro);
                }
            }
        }                
        
// (Valor, Variable, ¿Es positivo?, Miembro)
    
}
    public function 
AlmacenarTerminos(){
        
$this->ProcesarTerminos($this->PrimerMiembroA1"+");
        
$this->ProcesarTerminos($this->PrimerMiembroA1"-");
        
$this->ProcesarTerminos($this->SegundoMiembroA2"+");
        
$this->ProcesarTerminos($this->SegundoMiembroA2"-");
        for(
$i 0$i <= count($this->Terminos); $i++){
            if(
$this->Terminos[$i][&#39;signo&#39;] == 1){
                
$SignoContrario 0;
                
$Signo "+";    
            } else {
                
$SignoContrario 1;
                
$Signo "-";
            }
            if(
$this->Terminos[$i][&#39;variable&#39;] == 1 && $this->Terminos[$i][&#39;miembro&#39;] == 2){
                
$this->Terminos[$i][&#39;miembro&#39;] = 1;
                
$this->Terminos[$i][&#39;signo&#39;] = $SignoContrario;
            
} elseif($this->Terminos[$i][&#39;variable&#39;] == 0 && $this->Terminos[$i][&#39;miembro&#39;] == 1){
                
$this->Terminos[$i][&#39;miembro&#39;] = 2;
                
$this->Terminos[$i][&#39;signo&#39;] = $SignoContrario;
            
}
        }
    }    
    public function 
DeterminarResultado(){
        
$a = array();
        
$aa = array();
        for(
$i 0$i count($this->Terminos); $i++){
            if(
$this->Terminos[$i][&#39;variable&#39;] == 1){
                
if($this->Terminos[$i][&#39;signo&#39;] == 0){
                    
$a[] = intval("-".$this->Terminos[$i][&#39;valor&#39;]);
                
} else {
                    
$a[] = $this->Terminos[$i][&#39;valor&#39;];
                
}
            }
        }
        for(
$i 0$i count($this->Terminos); $i++){
            if(
$this->Terminos[$i][&#39;variable&#39;] == 0){
                
if($this->Terminos[$i][&#39;signo&#39;] == 0){
                    
$aa[] = intval("-".$this->Terminos[$i][&#39;valor&#39;]);
                
} else {
                    
$aa[] = $this->Terminos[$i][&#39;valor&#39;];
                
}
            }
        }
        
$this->PrimerMiembroC array_sum($a)."x";
        
$this->SegundoMiembroC array_sum($aa);
        
$amm array_sum($a);
        if(
is_int($this->SegundoMiembroC/$amm)){
            
$this->Resultado "x = ".$this->SegundoMiembroC/$amm;
        } else {
            
$this->Resultado "x = ".$this->SegundoMiembroC."/".$amm;
        }
    }
}
$ecu = new Ecuacion("4x-4 - 2""-3x -8x -3"); //(Primer termino, segundo termino
$ecu->AlmacenarTerminos();
$ecu->DeterminarResultado();
echo 
$ecu->PrimerMiembroA."=".$ecu->SegundoMiembroA."<br />";
echo 
$ecu->PrimerMiembroC."=".$ecu->SegundoMiembroC."<br />";
echo 
$ecu->Resultado;
?>


Que tal?, que les parece?

Comunidad PHPeros

[Clase] Ecuaciones de primer grado
« en: 14 de Abril de 2011, 00:02:24 am »

Desconectado RumbaStereo

  • PHPero Avanzado
  • ****
  • Mensajes: 362
  • Karma: 7
  • Sexo: Masculino
  • Diseñador Grafico
    • Ver Perfil
Re:[Clase] Ecuaciones de primer grado
« Respuesta #1 en: 14 de Abril de 2011, 00:57:22 am »
Muy Bien (se nota que trabajastes ;)) Pero Intenta explicar un poco mas tu Codigo un saludo :)
El diseño maneja lo que es creatividad, entrega y amor.

Desconectado Marcus

  • PHPer@
  • **
  • Mensajes: 72
  • Karma: 1
  • Sexo: Masculino
  • Nuev@ PHPer@
    • Ver Perfil
Re:[Clase] Ecuaciones de primer grado
« Respuesta #2 en: 14 de Abril de 2011, 01:02:00 am »
Muy Bien (se nota que trabajastes ;)) Pero Intenta explicar un poco mas tu Codigo un saludo :)
Muchas gracias!

Vale, ahora lo explico.

Desconectado javipilo

  • PHPero Experto
  • *****
  • Mensajes: 975
  • Karma: 31
  • Sexo: Masculino
    • Ver Perfil
Re:[Clase] Ecuaciones de primer grado
« Respuesta #3 en: 15 de Abril de 2011, 10:10:06 am »
Muy bien, te llevas un +1 por el código.

Cuando llegue a mi casa lo pruebo y te digo, pero el uso d elas variables y los objetos es perfecto.

Saludos

Desconectado Physlet

  • PHPero Experto
  • *****
  • Mensajes: 822
  • Karma: 41
  • Sexo: Masculino
  • Todo es posible con esfuerzo, dedicación e interés
    • Ver Perfil
    • PanamaDev
Re:[Clase] Ecuaciones de primer grado
« Respuesta #4 en: 16 de Abril de 2011, 00:37:00 am »
Por lo poco que probé, he visto que funciona y te felicito por ello, pero no me agrada como manejas los atributos de la clase. Hay muchos atributos innecesarios y que a mí parecer y según lo que he estudiado, rompen el esquema de una programación orientada a objetos pura.

Desconectado Marcus

  • PHPer@
  • **
  • Mensajes: 72
  • Karma: 1
  • Sexo: Masculino
  • Nuev@ PHPer@
    • Ver Perfil
Re:[Clase] Ecuaciones de primer grado
« Respuesta #5 en: 16 de Abril de 2011, 01:37:53 am »
Por lo poco que probé, he visto que funciona y te felicito por ello, pero no me agrada como manejas los atributos de la clase. Hay muchos atributos innecesarios y que a mí parecer y según lo que he estudiado, rompen el esquema de una programación orientada a objetos pura.
Muchas gracias :)

Me podrías decir cuales atributos son incorrectos/innecesarios? Es que yo estoy empezando con POO y la verdad es que quiero aprender correctamente