nuestras visitas

lunes, 21 de octubre de 2013

Costo de Peaje










Calcular el costo de peaje de camiones. Los camiones que llegan a una estación de peaje deben pagar $50.00, por cada eje más $100.00 por cada tonelada de peso total de camión.


Este es diagrama UML se plantea  para el problema




import javax.swing.JOptionPane;
public class CostoPeaje
{
private int totalEjes;
private int pagotEjes;
private int totalToneladas;
private int pagotToneladas;
private int pagoTotal;


    public int getTotalEjes()
 {
        return totalEjes;
    }
    public void setTotalEjes(int totalEjes) {
        this.totalEjes = totalEjes;
    }

    public int getPagotEjes() {
        return pagotEjes;
    }
   
    public void setPagotEjes(int pagotEjes) {
        this.pagotEjes = pagotEjes;
    }
   
    public int getTotalToneladas() {
        return totalToneladas;
    }
   
    public void setTotalToneladas(int totalToneladas) {
        this.totalToneladas = totalToneladas;
    }
        public int getPagotToneladas() {
        return pagotToneladas;
    }
 
    public void setPagotToneladas(int pagotToneladas) {
        this.pagotToneladas = pagotToneladas;
    }
  
    public int getPagoTotal() {
        return pagoTotal;
    }
  
    public void setPagoTotal(int pagoTotal) {
        this.pagoTotal = pagoTotal;
    }

   public void captura()
   {
     totalEjes=Integer.parseInt(JOptionPane.showInputDialog(null,"DAME EL TOTAL DE  EJES"));
 totalToneladas=Integer.parseInt(JOptionPane.showInputDialog(null,"DAME EL TOTAL DE TONELADAS"));

   }
  
   public void calcular()
   {
pagotEjes=totalEjes*50;
pagotToneladas=totalToneladas*100;
pagoTotal=pagotEjes+pagotToneladas;

   }
   public void imprimir()
   {
      JOptionPane.showMessageDialog(null,"EL PAGO TOTAL DE LOS CAMIONES ES-------"+"$"+pagoTotal);
   }
  
  
     public static void main(String[]peaje)
     {
    


CostoPeaje E=new CostoPeaje();
E.captura();
E.calcular();
E.imprimir();
     }  
   
}


Conclusión
La conclusión de este programa más que nada es de saber utilizar la lógica si no se entiende el programa con un análisis tienes que hacer los que sean necesarios para lograr comprender  lo que te pide el problema a veces las variables están ocultas en el programa este programa no fue difícil lo que sucede es que no se lograba comprender 


Salario de un empleado









Calcular el salario diario de un empleado diario con base en lo siguiente:
1) por cada hora trabajada recibe $17.50 para las primeras 8 horas 
2) por cada hora extra recibe 1.5 veces el costo de la hora de trabajo dentro del horario normal


package Segunda_unidad;
import javax.swing.JOptionPane;
public class Salario
{
  private float SN;// SALARIO NORMAL
  private int HT; // HORAS TRABAJADAS
  private float HE;// HORAS EXTRAS
 private float ST;// SALARIO TOTAL
 private float SE;// SALARIO POR HORAS EXTRAS
   

  public void captura()
  {
       
     
     
      HT=Integer.parseInt(JOptionPane.showInputDialog(null,"Dame tus horas trabajadas"));
    
  }
  public void calculo()
  {
      if(HT>8)
      {
            HE=HT- 8;
            SN=HT* 17.5f;
            SE=HE*17.5f*1.5f;
            ST=SN+SE;
      }
      else
      {
            SN=HT* 17.5f;
         
      }
  }
  public void imprime()
  {
      JOptionPane.showMessageDialog(null,"El salario Normal es:"+SN);
      JOptionPane.showMessageDialog(null," El salario por tus horas extras es:"+SE);
      JOptionPane.showMessageDialog(null,"tu salario total es:"+ST);
  }

   
}


Segunda parte

package Segunda_unidad;
import javax.swing.JOptionPane;
public class Solucion_salario
{
    public static void main(String [] arg)
    {
        Salario r2;
        r2=new Salario();
        r2.captura();
        r2.calculo();
        r2.imprime();
    }
}


conclusión

aprendimos a calcular el salario de un empleado partiendo de una condición y  llevando paso a paso cada parte del problema para obtener el salario diario. 




jueves, 12 de septiembre de 2013

Torres de Hanoi

 EL JUEGO DE LAS TORRES DE HANOI

Es un problema clásico de recursión, ya que pertenece a la clase de problemas cuya solución se simplifica notablemente al utilizar recursión.
Se tienen 3 torres y un conjunto de N discos de diferentes tamaños.
Cada uno de los mismos tiene una perforación en el centro que le permite deslizarse a cualquiera de las torres. Inicialmente, los N discos están ordenados de mayor a menor en una de las torres.
Se debe pasar los discos a otra torre, utilizando la tercera torre como auxiliar. Este movimiento debe hacerse respetando las siguientes:
1.    En cada movimiento solo puede intervenir un disco, por lo tanto siempre será el disco superior el que pueda moverse.
2.    No puede quedar un disco sobre uno de menor tamaño. Supongamos que la torre se identifica con los nombres A, B y C. Los discos están inicialmente en la torre A (origen) que se quiere transferir.     A continuación se presentara el estado inicial y el final respectivamente del problema de la torre de Hanói para tres discos. Como debe respetarse las reglas enunciadas anteriormente, la única manera de mover el disco inferior será moviendo los primeros (N-1) discos superiores. Dado de que se requiere llevar el disco inferior a la torre destino B, deben colocarse primero los (N-1) discos en la torre auxiliar C. estas operaciones pueden hacerse generalmente para todos los discos, distinguiéndose básicamente tres subtareas.
3.    Transferir (N-1) discos de la torre A, a la torre C.
4.    Mover un disco de la torre A, a la torre C.

5.    Transferir (N-1) discos de la torre C, a la torre B…



A continuación
 te presentaremos un problema ya resuelto









Problema a resolver
hacer un problema donde se demuestre el juego de torres de hanoi

Diagrama UML


Solución en JAVA

import javax.swing.JOptionPane;
public class TorresHanoi {
   
    private int numdiscos;
    private int nummovimientos;


    public int getNumdiscos() {
        return numdiscos;
    }

   
    public void setNumdiscos(int numdiscos) {
        this.numdiscos = numdiscos;
    }


    public int getNummovimientos() {
        return nummovimientos;
    }

  
    public void setNummovimientos(int nummovimientos) {
        this.nummovimientos = nummovimientos;
    }
    public void intercambio( int numdiscos,char A,char B,char C){
        
      if(numdiscos==1){
          setNummovimientos(getNummovimientos() +1);
          JOptionPane.showMessageDialog(null,"mover disco del poste A al poste B  "+"\n"+"numeros de movimientos "+nummovimientos);  
      }  
      else{
          intercambio(numdiscos-1,A,B,C);
          setNummovimientos(getNummovimientos()+1);
          JOptionPane.showMessageDialog(null,"mover disco del poste A al poste C "+"\n"+"numeros de movimientos "+nummovimientos); 
          intercambio(numdiscos-1,A,B,C);
      }
    }
    public void jugar(){
    JOptionPane.showMessageDialog(null,"el total de movimientos efectuados fueron  "+ nummovimientos);    
    }
}


public class Torres {
    public static void main(String []largs){
        
        TorresHanoi x;
        x=new TorresHanoi();
        
        x.intercambio(3, 'A' ,'B', 'C');
        x.jugar();
    }
    
}
CONCLUSIÓN
En este programa llegue ala conclusión que este juego aplica la recursion cuya solución se simplifica notablemente al utilizar recursion para mi fue el programa mas confuso pero imposible de hacer.



Recursividad

Factorial de un numero 





Problema a resolver
Hacer un programa que lea un número y calcule las factoriales de hasta el número leído.



Solución en JAVA

package Suquey;
import javax.swing.JOptionPane;
public class Recursion_factorial
{
private int numero;
    private int fact;

    public int getNumero()
    {
        return numero;
    }

    public void setNumero(int numero) 
    {
        //set para que guarde el valor
        this.numero = numero;
    }

   
    public int getFact()
    {
        //get para que devuelva el valor
        return fact;
    }

    public void setFact(int fact)
    {
        this.fact = fact;
    }
    public void captura()
    {
        numero=Integer.parseInt(JOptionPane.showInputDialog(null,"Numero:"));
    }
    public int calcularfactorial(int n)
    {

        if(n==1 || n==0)
        {
            return 1;
        }
        else
        {
            fact= n* calcularfactorial(n-1);
            return fact;
        }
    }
    public void imprimirfactorial()
    {
        JOptionPane.showMessageDialog(null,"El factorial es:"+fact);
    }
}


SOLUCIÓN

import javax.swing.JOptionPane;

public class Imprimir_factorial
{
public static void main(String[]arg)
{
    Recursion_factorial n;
    n= new Recursion_factorial();
    int numveces;
    numveces=Integer.parseInt(JOptionPane.showInputDialog(null,"numero de veces a calcular"));
for(int i=1; i<=numveces;i++)
{
    n.captura();
    n.calcularfactorial(n.getNumero());
    n.imprimirfactorial();
}
}

}

CONCLUSIÓN

Aprendimos a diferenciar las palabras get y set donde get retorna el valor y set guarda el valor, también aprendimos que un constructor es una característica que nos ofrece java y que tienen que llamarse iguales al momento de crearlos y únicamente lo que cambia son los parámetros.


Rectangulo

EL  ÁREA Y PERÍMETRO DE UN RECTÁNGULO




Problema a resolver:
Elaborar un programa que calcule el área y el perímetro de 3 rectángulos y 1 triangulo


Diagramas UML









Solución en JAVA

Solución Rectángulo

package Suquey;
import javax.swing.JOptionPane;
public class Rectángulos
{
// atributos
  private int base;
  private int altura;
  private int área;
  private int perímetro;

    public int getBase()
    {
        return base;
    }

    public void setBase(int base)
    {
        this.base = base;
    }

    public int getAltura()
    {
        return altura;
    }

    public void setAltura(int altura)
    {
        this.altura = altura;
    }

    public int getArea()
    {
        return área;
    }

    public void setArea(int área)
    {
        this.area = area;
    }

    public int getPerimetro()
    {
        return perimetro;
    }

  
    public void setPerimetro(int perimetro) {
        this.perimetro = perimetro;
    }
    //metodos del UML
    public  void captura()
    {
    base=Integer.parseInt(JOptionPane.showInputDialog("base"));
    altura= Integer.parseInt(JOptionPane.showInputDialog("altura"));
    }
    public void calculararea()
    {
        area=base*altura;
    }
    public void calculaperimetro()
    {
        perimetro=base+base+altura+altura;
    }
    public void imprimir()
    {
        JOptionPane.showMessageDialog(null,"El area del rectangulo es:"+area);
        JOptionPane.showMessageDialog(null,"El perimetro del rectangulo es:"+perimetro);
    }

}

SolucionTriangulo

package Suquey;
import javax.swing.JOptionPane;
public class Triangulo
{
    private int base;
    private int altura;
    private float area;
    private int perimetro;

    public int getBase() 
    {
        return base;
    }
    public void setBase(int base) 
    {
        this.base = base;
    }

    public int getAltura()
    {
        return altura;
    }
    public void setAltura(int altura) 
    {
        this.altura = altura;
    }

    public float getArea() 
    {
        return area;
    }

    public void setArea(float area) 
    {
        this.area = area;
    }

    public int getPerimetro()
    {
        return perimetro;
    }
    public void setPerimetro(int perimetro) 
    {
        this.perimetro = perimetro;
    }
    
    public void captura()
    {
        base=Integer.parseInt(JOptionPane.showInputDialog("base"));
        altura=Integer.parseInt(JOptionPane.showInputDialog("altura"));
    }

    public  void calculararea()
    {
        area=base*altura/2;
       
    }
    
    public void calculaperimetro()
    {
        perimetro=base+base+base;
    }
    public void imprimir()
    {
        JOptionPane.showMessageDialog(null,"area");
        JOptionPane.showMessageDialog(null,"perimetro");
    }

}

Solución ambos

import javax.swing.JOptionPane;
public class Solución
{
public static void main (String []arg)
{
    //declarando objetos
    Rectangulos r1,r2,r3;
    Triangulo t1;
    //creando objetos
    r1=new Rectangulos();
    r2=new Rectangulos();
    r3=new Rectangulos();
    t1=new Triangulo();

    r1.captura();
    r1.calculararea();
    r1.calculaperimetro();
    r1.imprimir();
    
    r2.captura();
    r2.calculararea();
    r2.calculaperimetro();
    r2.imprimir();

    r3.captura();
    r3.calculararea();
    r3.calculaperimetro();
    r3.imprimir();

    t1.captura();
    t1.calculararea();
    t1.calculaperimetro();
    t1.imprimir();

}

}

Conclusión
en este primer programa aprendimos a utilizar los diagramas UML,
a encapsular atributos, llamar dos clases desde un  método principal
y se nos hizo mas fácil programar utilizando los diagramas de UML.