lunes, 14 de noviembre de 2011

Programacion I: Problemas matematicos( Solucion con librerias basicas java)

Autor: Carlos Alberto San Martín San Román
Universidad Católica de Temuco.





Ciencias de la ingeniería

Nivel 1: Implementa modelos simples de la ingeniería y de las ciencias básicas, en el desarrollo de software.

Programa java, usando librerías básicas, para lograr la solución de problemas matemáticos de distintos tipos.
_________________________________________________________________________________
La matemática en java.

Hola amigos, hoy les vengo a mostrar simples soluciones para problemas matemáticos con java, señalando cada caso y su problema.




Problema con swing de java:


Leer tres números, indicar mediante un mensaje en pantalla si fueron ingresados en orden (ascendente, descendente o desordenado)....

 Codigo:
//Carlos Alberto San Martín San Román
//Objetivo: Mostrar si los numeros ingresados estan en orden ascendente, descendente o desordenados.

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class SanMartinCarlos implements ActionListener
{
private static final FlowLayout ESTILO_LAYOUT = new FlowLayout();
private JFrame ventana= new JFrame("Orden ");
private JLabel N1Etiq = new JLabel("Numero uno");
private JTextField N1Texto = new JTextField(20);
private JLabel N2Etiq = new JLabel("Numero dos");
private JTextField N2Texto = new JTextField(20);
private JLabel N3Etiq = new JLabel("Numero tres");
private JTextField N3Texto = new JTextField(20);
private JLabel OrdenEtiq = new JLabel("Orden: ");
private JTextField OrdenTexto = new JTextField(20);
private JButton botonRevisar = new JButton("Revisar");
public SanMartinCarlos()
{
ventana.setSize(275, 250);
ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
OrdenTexto.setEditable(false);
OrdenTexto.setBackground(Color.yellow);
botonRevisar.addActionListener(this);
ventana.setLayout(ESTILO_LAYOUT);
ventana.add(N1Etiq);
ventana.add(N1Texto);
ventana.add(N2Etiq);
ventana.add(N2Texto);
ventana.add(N3Etiq);
ventana.add(N3Texto);
ventana.add(OrdenEtiq);
ventana.add(OrdenTexto);
ventana.add(botonRevisar);
ventana.setVisible(true);
}
public void actionPerformed(ActionEvent e){
String respuesta1= N1Texto.getText();
double a = Double.parseDouble(respuesta1);

String respuesta2= N2Texto.getText();
double b = Double.parseDouble(respuesta2);

String respuesta3= N3Texto.getText();
double c = Double.parseDouble(respuesta3);
if(a<b&&a<c&&b<c)
{
OrdenTexto.setText(" Ascendente");
}
else
if(a>b&&a>c&&b>c)
{
OrdenTexto.setText(" Descendente");
}
else
{
OrdenTexto.setText(" Desordenado");
}
}
public static void main(){
SanMartinCarlos gui = new SanMartinCarlos();
}
}

<<<En este ejemplo, mas que nada la solución para obtener un orden va en donde se encuentran los "IF"(si este es mayor a este y este es mayor a este otro), así se obtiene la solución del problema.>>>


Otro problema:

Analice y desarrolle un programa que permita separar un número entero de 5 dígitos en dos números enteros. Uno compuesto por los dígitos pares y otro por los impares. Por ejemplo si nuestro número original es 12475 los números resultantes: 24 y 175.


Codigo:
//Autor: Carlos Alberto San Martín San Román
//Objetivo: Separar un número de cinco dígitos en dos números que sean par e impar
import java.util.*;
import java.math.*;

public class Dígitos {

//main punto de inicio de la aplicación
public static void main(String[] args) {
int n;
int nn=0;
int nPar=0;
int nImp=0;
int resto=0;
int poimp=1;
int popar=1;
// Configura el flujo de entrada
Scanner num = new Scanner(System.in);
// Obtiene el número de cinco dígitos
System.out.print("introduzca número de cinco dígitos: ");
n = num.nextInt();
if((n<10000)||(n>99999))
System.out.print("número con dígitos incorrectos");
else
{if(n>9999&&n<100000)
{ resto=n%10;
nn=resto;
switch(nn) {
case 1:
case 3:
case 5:
case 7:
case 9: nImp=nn;poimp=poimp*10;break;
default: nPar=nn;popar=popar*10;
}
n/=10;
resto=n%10;
nn=resto;
switch(nn) {
case 1:
case 3:
case 5:
case 7:
case 9: nImp=nImp+nn*poimp;poimp=poimp*10; break;
default: nPar=nPar+nn*popar;popar=popar*10;
}
n/=10;
resto=n%10;
nn=resto;
switch(nn) {
case 1:
case 3:
case 5:
case 7:
case 9: nImp=nImp+nn*poimp;poimp=poimp*10; break;
default: nPar=nPar+nn*popar;popar=popar*10;
}
n/=10;
resto=n%10;
nn=resto;
switch(nn) {
case 1:
case 3:
case 5:
case 7:
case 9: nImp=nImp+nn*poimp;poimp=poimp*10; break;
default: nPar=nPar+nn*popar;popar=popar*10;
}
n/=10;
resto=n%10;
nn=resto;
switch(nn) {
case 1:
case 3:
case 5:
case 7:
case 9: nImp=nImp+nn*poimp;poimp=poimp*10;break;
default: nPar=nPar+nn*popar;popar=popar*10;
}
System.out.println("-----------------------------------------------------------");
System.out.println("número de cinco dígitos dividido: ");
System.out.println("número impar: " +nImp);
System.out.println("número par: " +nPar);
System.out.println("-----------------------------------------------------------");
}
}
}
}

<<<Al igual que el caso anterior, este programa presenta una solución comparativa, pero descomponiendo el entero, y comparando cada numero con impares y pares, para deducir a cual pertenece.>>>


Ejercicios como estos son muy fáciles y comunes para los programadores.


Reflexión:

Problemas comunes como estos, basados en numeros de los cuales se necesita saber distintas cosas, pueden ser comparados con if o switch, pero tambien existen problemas que necesitan utilizar +, -, *, /, %, etc, los cuales nos permiten realizar operaciones matematicas.

Además existe una libreria matematica de java, llamada java.math.*.

________________________________________________________________


Espero que esta información les haya sido de ayuda, cualquier corrección o duda, escribirme. Estaré atento, hasta luego.

No hay comentarios:

Publicar un comentario