Publicidad

Introducción:

Hola, después de mucho tiempo sin hacer un nuevo post hoy les dejo una implementación de la clase polinomio que solo incluye insertar y sumar monomio, escrito en el lenguaje de java.

1. ¿Qué es un polinomio?

Es un conjunto de letras y números conectados por símbolos matemáticos o simplemente un conjunto de monomios.

Implementación de polinomio, definición de polinomio, Bepo y Dino, dibujos Ney, ilustración Ney, dinosaurio kawaii, dinosaurio baby, dinosaurio cartoon, Deviantart Ney

2. ¿Qué es un tipo de dato abstracto?

Es la definición de un objeto por la acción que realiza, estos objetos no siempre tienen una característica física.

3. Polinomio como tipo de dato abstracto.

La mejor manera que tengo de expresar un polinomio de forma abstracta es haciendo la siguiente pregunta. ¿Cómo debe comportarse un polinomio? Para responder esta pregunta podemos hacer una lista con los detalles del comportamiento que creemos debe tener.

Especificaciones:

  • Para formar un polinomio debemos poder ingresar el coeficiente, exponente y signo.
  • Si los exponentes son del mismo valor sumamos.
  • El polinomio debe ser ordenado de forma ascendente.
  • Los exponentes pueden ser positivos o negativos.
  • Los coeficientes serán números que pertenezcan a los números reales.

Funcionamiento para insertar un monomio en un polinomio:

  • Obtener la posición que le corresponde.
    • Comprueba si existe otro monomio con el mismo exponente en esa posición.
      • Si no existe inserta en esa posición recorriendo los demás monomios
      • Si existe suma.

Demostración del programa funcionando.

Publicidad

4. Implementación de la clase polinomio.

Creamos la clase polinomio con sus atributos.

public class Polinomio{
  double[] V_Coef;
  int[] V_Exp;
  int dim;
}

Nota: En la clase escrita aquí decidí poner el corchete de sierre, luego de los atributos pero en el código original el corchete de cierre de la clase va al final de todos los métodos.

Ahora creamos el constructor (el constructor debe llevar el mismo nombre de la clase).

  public Polinomio(){
    dim = -1;
    V_Exp = new int [5];
    V_Coef = new double [5];
    
  }

 

Creamos el método insertar.

  public void Insertar(char signo, double coeficiente, int exponente){
   
    if(!SiCoeficienteEsCero(coeficiente) && Pertenece(signo)){
      if(signo == '-'){
         coeficiente = - coeficiente;
      }
      
      if(dim == -1 ){
        dim++;
        V_Coef[dim] = coeficiente;
        V_Exp[dim] = exponente;
      } else {
        int position = BuscarPosicion(exponente);
        if(V_Exp[position] == exponente){
          V_Coef[position] = V_Coef[position] + coeficiente;
        }else{
          dim++;
          InsertarEn(position,coeficiente, exponente);
        }
        
      }
      
    }
  
  }

 

Escribimos la función que retorna true cuando el coeficiente es cero.

  public boolean SiCoeficienteEsCero(double coeficiente){
    if(coeficiente == 0){
        return true;
      }else{
        return false;
      }
  }

 

Ahora escribimos la función que nos dice si el signo pertenece al conjunto (- +).

  public boolean Pertenece(char signo){
    String auxSigno = Character.toString(signo);
    
    if(auxSigno.matches("[-+]")){
      return true;
    }else{
      return false;
    }
    
  }

 

Toca escribir la función o método que nos retorna la posición que le corresponde al nuevo monomio dentro del polinomio.

  public int BuscarPosicion(int exponente){
    int i = dim;
    while(i > -1 && exponente >= V_Exp[i]){
      i--;
    }
    i++;
    return i;    
  }

 

Escribimos el procedimiento de insertar.

  public void InsertarEn(int position, double coeficiente, int exponente){
    Redimensionar();
    int i = dim;
    while(i > position){
      i--;
      V_Coef[i+1] = V_Coef[i];
      V_Exp[i+1] = V_Exp[i];
    }
    V_Coef[position] = coeficiente;
    V_Exp[position] = exponente;
  }

 

El ultimo método de la clase es redimensionar.

  public void Redimensionar(){
    if(dim+1 == V_Coef.length){
      double aux1[] = new double[V_Coef.length+1];
      int aux2[] = new int [V_Coef.length+1];
    
      System.arraycopy(V_Coef,0,aux1,0,dim+1);
      System.arraycopy(V_Exp,0,aux2,0,dim+1);
    
      V_Coef = aux1;
      V_Exp = aux2;
    }
  }

 

Extra: Puedes ver el código completo dando clic aquí (la clase polinomio se encuentra dentro de la carpeta Logic).

¿Tienes una mejor forma de explicarlo?, o crees que me equivoque en algún punto.
Si es así escríbelo en un comentario en la parte de abajo para que todos podamos aprender.😀

Publicidad


Subscribe
Notify of
guest

4 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
javier

podrias subir el metodo dividir :’v

javier

:’v

Juan

sube mas post y video de java .