Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Codigo Java para Calcular Integrales
Codigo Java para Calcular Integrales
/*
* Created on 27-feb-2005
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package com.welsungo.math.integral;
import org.nfunk.jep.JEP;
/**
* @author felipe
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class DefnIntegral {
/** Parser */
private JEP myParser;
public DefnIntegral() {
myParser = new JEP();
myParser.initFunTab(); // clear the contents of the function table
myParser.addStandardFunctions();
myParser.setTraverse(true);
}
/**
* @return Returns the desde.
*/
public double getDesde() {
return mDesde;
}
/**
* @param desde
* The desde to set.
*/
public void setDesde(double desde) {
mDesde = desde;
}
/**
* @return Returns the function.
*/
public String getFunction() {
return mFunction;
}
/**
* @param function
* The function to set.
*/
public void setFunction(String function) {
mFunction = function;
}
/**
* @return Returns the hasta.
*/
public double getHasta() {
return mHasta;
}
/**
* @param hasta
* The hasta to set.
*/
public void setHasta(double hasta) {
mHasta = hasta;
}
/**
* @return Returns the intervalo.
*/
public double getNumIntervalos() {
return mNumIntervalos;
}
/**
* @param intervalo
* The intervalo to set.
*/
public void setNumIntervalos(double pNumIntervalos) {
mNumIntervalos = pNumIntervalos;
}
/**
*
*/
public double getIntegral() {
// TODO
double sizeIntervalo = (mHasta - mDesde) / mNumIntervalos;
System.out.println("sizeIntervalo="+sizeIntervalo);
System.out.println("f(x="+aux+") = "+dblRes);
//Compute Integral
//Valor de la funcion en mDesde
this.setXValue(mDesde);
//this.parseExpression(mEvaluator.getFunction());
this.parseExpression(this.getFunction());
this.updateResult();
String strDesde = this.getResult();
double dblDesde = 0;
try {
dblDesde = Double.parseDouble(strDesde.trim());
} catch (NumberFormatException e){e.printStackTrace();}
System.out.println("f(x="+mDesde+") = "+dblDesde);
System.out.println("f(x="+mHasta+") = "+dblHasta);
/*
* for(double i=mDesde; i <mHasta; i+sizeIntervalo) { }
*/
return dblIntegral;
}
/**
* @return Returns the error.
*/
public String getError() {
return mError;
}
/**
* @param pError The error to set.
*/
public void setError(String pError) {
mError = pError;
}
/**
* @return Returns the result.
*/
public String getResult() {
return mResult;
}
/**
* @param pResult The result to set.
*/
public void setResult(String pResult) {
mResult = pResult;
}
/**
* @return Returns the myParser.
*/
public JEP getMyParser() {
return myParser;
}
/**
* @param pMyParser The myParser to set.
*/
public void setMyParser(JEP pMyParser) {
myParser = pMyParser;
}
/**
* @return Returns the xValue.
*/
public double getXValue() {
return xValue;
}
/**
* @param pValue The xValue to set.
*/
public void setXValue(double pValue) {
xValue = pValue;
}
}
BINARIO
VENTANA
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.GridBagLayout;
import javax.swing.JLabel;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.SwingConstants;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Ventana frame = new Ventana();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Ventana() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 435, 241);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
GridBagLayout gbl_contentPane = new GridBagLayout();
gbl_contentPane.columnWidths = new int[]{0, 30, 0, 0, 0, 0};
gbl_contentPane.rowHeights = new int[]{30, 0, 0, 0, 0, 0, 0, 0, 0};
gbl_contentPane.columnWeights = new double[]{0.0, 1.0, 0.0, 0.0, 0.0,
Double.MIN_VALUE};
gbl_contentPane.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
Double.MIN_VALUE};
contentPane.setLayout(gbl_contentPane);
Nombre de usuario: *
Contrasea: *
Navegacin
Blogs
o Categorias
Contenido
Foros de Discusin
Encuestas
Tips
Usuarios
Envos recientes
Temas nuevos
more
En lnea
En este momento hay 0 usuarios y 145 invitados en lnea.
Comentarios recientes
keep alive
hace 2 horas 2 mins
wat
hace 2 horas 7 mins
JSR250
hace 2 horas 19 mins
GIST
hace 2 horas 19 mins
compartir
hace 19 horas 53 mins
Validar Int
hace 1 da 14 horas
Revisa el tuneo a nivel BD
hace 2 das 4 horas
Ya tengo el pool en JNDI
hace 6 das 2 horas
JNDI
hace 1 semana 1 hora
Cambie de pool
hace 1 semana 5 das
Encuesta
Qu lenguaje alternativo para la JVM te llama ms la atencin?:
Groovy
Scala
Clojure
JRuby
Jython
Contenido popular
Hoy:
//Cdigo para el juego... el Ahorcado//
Manejo de XML
Que formato usar para 2 decimales o ninguno?
Recoger valor de JComboBox
llamar a un metodo que esta en una clase hacia otra clase
Siempre:
ltimas impresiones:
Calculadora Binaria
Submitted by Grillitos on Jue, 07/26/2012 - 19:12
Java Standard Edition
Necesito hacer un men que de las opciones suma, resta, and, or y salir, que permita
ingresar por teclado dos numeros decimales y los convierta a binarios, para que en binario
realice la opcin seleccionada del menu anterior y mostrar en pantalla el resultado en
binario. No debo utilizar funciones nativas de Java.
Soy nueva programando y lo nico que llevo de cdigo es el men de las opciones hasta
solicitar el ingreso de los nmeros en decimal, pero ya me atore, no encuentro ningun
ejemplo de cdigo que me ayude a entender como hacerlo, ya que la mayoria utiliza
funciones nativas de Java.
Pienso que una vez capturados los nmeros decimales, debo convertirlos a binario y luego
realizar la operacin seleccionada por el usuario.
Me podran ayudar, se que en este foro todos son expertos menos yo.......
Adjunto Tamao
Dudas.pptx 222.84 KB
Conexion dbf por ODBC me pueden ayudar a hacerle zoom a un archivo pdf desde netbeans y es
una aplicacion de escritorio huso JFrame
0111
+
0001
--------
????
Si no lo sabes, empieza por ah. Si lo sabes trata de describir los pasos que necesitas dar.
Forma un algoritmo con eso y luego lo implementas.
No est claro que tanto tienes que hace pero lo "binario" es solo una representacin. Si tu
capturas un numero y lo muestras como binario an puedes hacer operaciones dentro del
programa:
Saludos.
p.d. Ah tienes ya dos muy buenos "hints" para transformar de y hacia binario en Java y no
es necesario que subas todo un powerpoint para el screenshot, puedes subir el png
directamente
Gracias por tomarte la molestia de contestarme, ya le sobre como hacerlo con papel y
lapiz, tambin lo hice en excel pero en el codigo no puedo usar integer.parseInt ni
integer.tobinaryString.
Y la verdad he encontrado escasa informacin sobre como hacerlo sin usarlos, sobre todo
cuando el nmero decimal sea negativo.
Sin String
Si no puedes usar el mtodo que te dice Oscar, vas a tener que hacer las divisiones (en el
caso de la conversin de decimal a binario) y los residuos concatenarlos en un String, y
para la conversin de binario a decimal, vas a tener que usar el String resultante como
arreglo, y sumar las posiciones, o sea, lo ms cercano a hacerlo a lpiz y papel.
Inicie sesin o regstrese para enviar comentarios
Saludos.
Y para realizar una suma binaria la teora dice que hay que basarnos en la siguiente tabla:
Tabla para sumar:
0+0=0
0+1=1
1+0=1
1 + 1 = 10
/**
*
* @author Kalt Wulx
*/
public class ConversorBinario {
/*
* Suma dos numeros binarios.
* Recibe dos arreglos de tipo entero y retorna un
* arreglo de tipo entero con el resultado de la suma.
*/
public static int[] sumBinAndBin(int a[], int b[]) {
int acarreo = 0;//variable de control.
int[] c = new int[a.length];//Arreglo a
retornar.
//Se recorre el arreglo a de manera inversa.
for (int i = a.length - 1; i > -1; i--) {
int suma = a[i] + b[i]; //Se realiza la suma una
vez por ciclo
if(suma == 2) {//Si la suma da 2 los elementos en
el arreglo son 1 y 1.
c[i] = 0;//Por lo tanto debe ir como resultado
un 0
acarreo = 1;//Y se lleva un acarreo
}
//Si por el contrario la suma es 0 quiere decir
que los elementos
//eran 0 y 0.
else if(suma == 0) {
c[i] = 0;//Entonces debe ir 0 como resultado
}
//Si por el contrario la suma es 1, entonces los
elementos
//eran 0 y 1 o viceversa.
else if(suma == 1) {
c[i] = 1;//Y debe ir como resultado un 1.
}
if(acarreo == 1) {//Si existe un acarreo en este
ciclo
//Se comprueba si la suma del elemento
siguiente del
//arreglo "a" mas el acarreo es igual a 2.
if(a[i-1] + 1 == 2) {
a[i-1] = 0;//Si lo es, se asigna un 0 a
"a".
acarreo = 1;//Y se sigue llevando un
acarreo.
} else {//Si la suma no da 2, solo puede dar
1.
a[i-1] = 1;//Y entonces se asigna 1 a "a".
acarreo = 0;//Y el acarreo desaparece.
}
}
}
return c;//Se regresa el arreglo.
}
}
Y con eso obtienes el resultado de la suma de dos nmeros binarios. Para ver el resultado
falta hacer el mtodo que convierta un numero binario a decimal ;) o puedes buscar paginas
web que hagan esto ultimo para verificar resultados. Ya solo faltan la resta, divisin,
multiplicacin y convertirlos a decimal >_<.
Lo esencial es comprender la teora despus puedes pasarlo a cdigo. Como ya dijo Oscar,
si se te dificulta puedes preguntar :)
Me gustara saber si alguien tiene alguna forma mas "pro" de hacer la suma. Yo estaba
intentando con una pero nomas no me salio.
Saludos!
Inicie sesin o regstrese para enviar comentarios
Binario a decimal
Ya le ayudaste mucho JoseManuel asi que yo tambin (jeje) aqui va el de decimal a binario.
Prog03.java
/*
Decimal a binario*/
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JOptionPane;
import javax.swing.JButton;
import javax.swing.JTextField;
import java.awt.event.*;
import javax.swing.*;
import java.lang.String.*;
import java.awt.Color;
//import java.net.URL;
public Prog03(){
txtDecimal=new JTextField(6);
txtDecimal.setToolTipText("introducir solo nmeros
enteros");
JPanel panel=new JPanel();
panel.add(lblImg);
panel.add(lblDecimal);
panel.add(txtDecimal);
System.out.println("Nmero decimal
ledo:"+txtDecimal.getText()+" Numero binario obtenido
:"+convertir(txtDecimal.getText()));
//JOptionPane.showMessageDialog(null,"Numero binario
obtenido:"+convertir(txtDecimal.getText()),JOptionPane.INFORM
ATION_MESSAGE,new ImageIcon("SRN4.jpg"););
});
System.exit(0);
}
});
panel.add(btnActiva);panel.add(btnSalir);
setTitle("[Decimal a Binario]");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setDefaultLookAndFeelDecorated(true);
setSize(600,230);
setVisible(true);
add(panel);
for(UIManager.LookAndFeelInfo
laf:UIManager.getInstalledLookAndFeels()){
if("Nimbus".equals(laf.getName()))
try {
UIManager.setLookAndFeel(laf.getClassName());
//UIManager.setLookAndFeel("com.sun.j
ava.swing.plaf.nimbus.NimbusLookAndFeel" ) ;
//UIManager.setLookAndFeel(UIManager.getS
ystemLookAndFeelClassName());
new Prog03();
}
catch (ClassNotFoundException e) {
System.out.println("[Main.main:ClassN
otFoundException]"+ e.getMessage());
}
catch (InstantiationException e) {
System.out.println("[Main.main:Instan
tiationException]"+ e.getMessage());
}
}
// limpiar
public void limpia(){
txtDecimal.setText("");
int resto=0;
int numeroDecimal=Integer.parseInt(cade);
String numeroBinario="";
while(numeroDecimal>=2){
resto=numeroDecimal%2;
numeroDecimal=(int)numeroDecimal/2;
numeroBinario+=String.valueOf(resto);
}
numeroBinario+=numeroDecimal;
StringBuffer sb = new StringBuffer(numeroBinario);
return sb.reverse();
En ejecucin:
Sr - pero el decimal-binario
jajajaja
Ya lei bien el ttulo me confundi
que ondas como ya vi los codigos arriba me anime hacer uno.. es una clase con dos
metodos.. un convierte de Decimal a binario, octal y hexadecimal
y el otro metodo convierte de binario a decimal, aun que con algunos ajustes que haber si
hago despues podra convertir de cualquier base a decimal..
tiene algunos bugs, el metodo que convierte decimal a X base se le ponen en el metodo una
base mayor a 16 sacara las letras de los hexadecimal al encontrar residuos de 10, 11,
12,13,14,15
y el otro metodo solo convierte binario a decimal, aun que como dije con algunos ajustes
podra con cualquier base..
haber si luego hago las sumas binarias.
while(numero !=0)
{
detec = true;
residuo = (numero%base);
for(int i=10;i<16;i++)
{
if(residuo==i)
{
btemp.append(hex[i-10]);
detec = false;
break;
}
}
if(detec)
{
btemp.append(residuo);
}
numero = (int)(numero/base);
}
conversion = btemp.reverse().toString();
}
System.out.println(d.getDecimalBase());
d.setBaseDecimal(d.getDecimalBase(), 2);
System.out.println(d.getBaseDecimal());
Cdigo
1.
int main()
{
int num,complemento,res;
printf("Bits en la RAM\n\n");
printf("Dame un valor entero: ");
scanf("%d",&num);
if(num>0)
binario(num);
else if(num<0)
{
complemento=binario(num);
res=complemento_a_dos(complemento);
}
return 0;
}
tengo un problema con este codigo, hasta la funcion que convierte decimal
en binario esta bien, pero despues cuando ingrese un numero negativo me
tiene que dar el complemento a dos, y ah fue donde me perdi
completamente. Estaba pensando que tal vez con divisiones sucesivas hasta
que me aparezca un 1 de derecha a izquierda y despues los digitos que le
siguen cambiar los 0 por unos y viceversa
int flag = 0;
/* Si es un nmero negativo, lo hacemos positivo y le restamos 1(*), */
/* adems activamos el flag para saber que es negativo */
/* Devolvemos el array */
return binary;
}
int main()
{
int
num,num_bin,complemento_a_dos
;
printf("Bits en la RAM\n\n");
printf("Dame un valor entero: ");
scanf("%d",&num);
if(num>0)
binario(num);
else if(num<0)
{
num=-num-1;
num_bin=binario(num);
complemento_a_dos=comple
mento(num_bin);
}
printf("\nPresione una tecla para
continuar...\n");
getch();
return 0;
}
Volver arriba
...
if (!true) // si no es verdad entonces ....
...
Cdigo:
Volver arriba
n = -n - 1
equivale a hacer complemento a 1:
n = ~n
Cdigo:
#include <stdio.h>
int main(void)
{
int num, b;
if (num >= 0) {
b = binario(num);
printf("--> %d\n", b);
}
else {
num = ~num;
/* num = ~num + 1; Complemento a 2 */
b = binario(num);
printf("--> %d\n", b);
}
return 0;
}
Un saludo.
Volver arriba
WhiteSkull Publicado: Lunes 26 Dic 2011 16:21
CoAdmin
Ttulo del mensaje: Re: complemento a
dos
marcela escribi:
Cdigo:
#include <stdio.h>
#include <conio.h>
int main()
{
char num; // recuerda que un entero, normalmente son
32 bits y un char son 8
printf("Trabajando con Bits\n\n");
printf("Dame un valor de 8 bits con signo (-127 a 127):
");
scanf("%d",&num);
binario(num);
// if(num>0)
// binario(num);
// else if(num<=0)
// {
// num=-num-1;
// num_bin=binario(num);
// complemento_a_dos=complemento(num_bin);
// }
getch();
return 0;
}
// if(num!=0)
// {
// binario(num/2);
// num%=2;
// printf("%d",num);
// return num;
// }
//return 0;
}