elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


  Mostrar Mensajes
Páginas: 1 2 [3] 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ... 31
21  Programación / Java / Re: Ayuda con Eventos y libreria Swing en: 5 Febrero 2013, 17:26 pm
Buenas!!

También podrías controlar que solo acepte números.

He modificado algunas cosillas para acortar el código y que solo convierta números. No sé mucho de Java, pero es un buen ejemplo para practicar:

Clase Convertidor
Código
  1. import java.awt.FlowLayout;
  2. import java.awt.event.ActionEvent;
  3. import java.awt.event.ActionListener;
  4. import java.awt.event.ItemEvent;
  5. import java.awt.event.ItemListener;
  6. import javax.swing.ButtonGroup;
  7. import javax.swing.JButton;
  8. import javax.swing.JFrame;
  9. import javax.swing.JLabel;
  10. import javax.swing.JOptionPane;
  11. import javax.swing.JRadioButton;
  12. import javax.swing.JTextField;
  13.  
  14. public class Convertidor extends JFrame {
  15.    //Declaracion de variables
  16.    private static final long serialVersionUID = 1L;
  17.    private JLabel etiqueta1;
  18.    private JLabel etiqueta2;
  19.    private JTextField campo1;
  20.    private JTextField campo2;
  21.    private JButton botonCalcular;
  22.    private JRadioButton botonBinario;
  23.    private JRadioButton botonHexadecimal;
  24.    private ButtonGroup grupoBotones;
  25.    private boolean esBinario;
  26.    private boolean esHexadecimal;
  27.    private int numeroDecimal;
  28.  
  29.    public Convertidor() {
  30.        super("Convertidor");
  31.        setLayout(new FlowLayout());
  32.  
  33.        //Se crean las etiquetas
  34.        etiqueta1 = new JLabel("Numero a convertir");
  35.        etiqueta2 = new JLabel("Numero convertido ");
  36.  
  37.        //Se crean los campos, el primero para ingresar y el otro para imprimir
  38.        campo1 = new JTextField(10);
  39.        campo2 = new JTextField(10);
  40.        campo2.setEditable(false);
  41.  
  42.        //Se crean los botones de Radio y uno normal
  43.        botonCalcular = new JButton("Calcular");
  44.        botonBinario = new JRadioButton("Binario");
  45.        botonHexadecimal = new JRadioButton("Hexadecimal");
  46.  
  47.        //Se crean booleanos necesarios para determinar el tipo de numero a convertir
  48.        esBinario = false;
  49.        esHexadecimal = false;
  50.        numeroDecimal = 0;
  51.  
  52.        //Se crea el grupo de botones de radio y se agregan los botones radio a
  53.        //dicho grupo
  54.        grupoBotones = new ButtonGroup();
  55.        grupoBotones.add(botonCalcular);
  56.        grupoBotones.add(botonBinario);
  57.        grupoBotones.add(botonHexadecimal);
  58.  
  59.  
  60.        //Se agregan las etiquetas, campos y botones a la ventana
  61.        add(etiqueta1);
  62.        add(campo1);
  63.  
  64.        add(etiqueta2);
  65.        add(campo2);
  66.  
  67.        add(botonBinario);
  68.        add(botonHexadecimal);
  69.        add(botonCalcular);
  70.  
  71.        //Se crea instancia AdministradorEventos para controlar los eventos
  72.        AdministradorEventos administrador = new AdministradorEventos();
  73.  
  74.        //Se le agregan eventos a los botones a utilizar
  75.        botonBinario.addItemListener(administrador);
  76.        botonHexadecimal.addItemListener(administrador);
  77.        botonCalcular.addActionListener(administrador);
  78.    }
  79.  
  80.    private class AdministradorEventos implements ActionListener, ItemListener {
  81.  
  82.        /**
  83.          * Metodo que permite calcular el numero numero decimal a binario, hexade
  84.          * cimal o viceversa, segun lo que se haya seleccionado en los botones
  85.          * de radio
  86.          */
  87.        public void actionPerformed(ActionEvent evento) {
  88.         String resultado = "";
  89.            if(campo1.getText().equals("")) {
  90.                JOptionPane.showMessageDialog(null, "No ha ingresado ningun numero", "ERROR", 0);
  91.            } else {
  92.             try {
  93.             numeroDecimal = Integer.parseInt(campo1.getText());
  94.                } catch(Exception e) {
  95.                 JOptionPane.showMessageDialog(null, "Solo números, por favor", "ERROR", 0);
  96.                 numeroDecimal = 0;
  97.                }
  98.             if(esBinario) {
  99.             while(numeroDecimal != 0) {
  100.             resultado += numeroDecimal % 2; //Se concatena
  101.             numeroDecimal /= 2;
  102.             }
  103.             char arregloChar[] = resultado.toCharArray();
  104.             resultado = "";
  105.             for(int i = 0; i < arregloChar.length; i++) {
  106.             resultado += arregloChar[(arregloChar.length-1)-i];
  107.             }
  108.                    campo2.setText(resultado);
  109.             } else if(esHexadecimal) {
  110.                    int resto = 0;
  111.                    while(numeroDecimal != 0) {
  112.                        resto = numeroDecimal % 16;
  113.                        switch(resto) {
  114.                            case 10:
  115.                             resultado += "A";
  116.                                break;
  117.                            case 11:
  118.                             resultado += "B";
  119.                                break;
  120.                            case 12:
  121.                             resultado += "C";
  122.                                break;
  123.                            case 13:
  124.                             resultado += "D";
  125.                                break;
  126.                            case 14:
  127.                             resultado += "E";
  128.                                break;
  129.                            case 15:
  130.                             resultado += "F";
  131.                                break;
  132.                            default:
  133.                             resultado += resto;
  134.                                break;
  135.                        }//Fin del Switch
  136.                        numeroDecimal = numeroDecimal / 16;
  137.                        System.out.println(numeroDecimal);
  138.                    }//Fin del ciclo While
  139.                    char arregloChar[] = resultado.toCharArray();
  140.                    resultado = "";
  141.                    for(int i = 0; i < arregloChar.length; i++) {
  142.                     resultado += arregloChar[(arregloChar.length-1)-i];
  143.                    }
  144.                    campo2.setText(resultado);
  145.             } else {
  146.             JOptionPane.showMessageDialog(null,"Seleccione el tipo de numero a convertir","Error", 0);
  147.             }
  148.            }
  149.        }
  150.  
  151.        /**
  152.          * Metodo que permite seleccionar el tipo de numero a convertir
  153.          */
  154.        public void itemStateChanged(ItemEvent evento) {
  155.            if(botonBinario.isSelected()) {
  156.                esBinario = true;
  157.                esHexadecimal = false;
  158.            } else if(botonHexadecimal.isSelected()) {
  159.                esBinario = false;
  160.                esHexadecimal = true;
  161.            }
  162.        }
  163.    }
  164. }
  165.  

Saludos
22  Programación / Programación C/C++ / Re: Programa para cifrar mensajes de forma paseudo-aleatoria. en: 25 Enero 2013, 12:49 pm
Buenas!!

He echado un ojo por encima y he visto algunas cosas a corregir:
-La función ran debe devolver un entero (return num)
-El main se puede reducir muuuuuuuuuuuuuuuuuuuuuuuucho. Utiliza las funciones que has creado, no repitas tanto el código
-Cuando cifras y descifras abres y cierras los ficheros varias veces. Eso consume muchos recursos y es totalmente innecesario
Código
  1. is.seekg(0, ios::beg);
  2. is.close();
  3. double long size2=0;
  4. cout << endl << endl<< "PUEDE TARDAR SEGUNDOS DEPENDIENDO DE LA LONGITUD DEL ARCHIVO" << endl << endl;
  5. is.open (str);
  6.  
  7. ...........
  8.  
  9. mens='\0';
  10. is.close();
  11. is.open (str);
  12. int v=0;

No sé si habrá más cosas, he mirado solo por encima

Saludos
23  Programación / Programación C/C++ / Re: No reconoce las variables en funciones en: 25 Diciembre 2012, 16:36 pm
Buenas!!

Los errores ocurren porque utilizas en la función introduceNombre las variables datoscomp, datosobt..... cuando esas variables las tienes definidas en el main, es decir, que solo las puedes usar en el main. Los parámetros que le pasas a la función son dc, dp, dr y dt, así que debes usar estos:

Código
  1. void introduceNombre (char dc[N],char dp[N],char dr[N],char dt[N]) {
  2.    printf("Introduce nombre de archivo sin extension");
  3.    gets(dc);
  4.    strcpy(dp,dc);
  5.    strcpy(dr,dc);
  6.    strcpy(dt,dc);
  7.    strcat(dc,".train");
  8.    strcat(dp,".test");
  9.    strcat(dr,".real");
  10.    strcat(dt,".out");
  11. }
  12.  

Lee sobre el alcance de las variables.
Para que se modifique el valor de los parámetros debes pasarlos por referencia.
Main debe devolver un entero.

Saludos
24  Programación / Programación C/C++ / Re: detectar valores negativos vector en: 11 Diciembre 2012, 17:31 pm
Buenas!!

Código
  1. #include<iostream>
  2. #include<vector>
  3.  
  4. using namespace std;
  5.  
  6. int entero_negativo(vector<int> &v){
  7.    unsigned i, s = 0;
  8.    for(i = 0; i < v.size(); i++) {
  9.        if(v[i] < 0) {
  10.            s++;
  11.        }
  12.    }
  13.    return s;
  14. }
  15.  
  16. int main() {
  17.    int i = 0, negativos, n;
  18.    vector<int> v;
  19.    do {
  20.        cout << "Introduzca el elemento " << i << " del vector: ";
  21.        cin >> n;
  22.        v.push_back(n);
  23.        i++;
  24.    } while(n != 0);
  25.    negativos = entero_negativo(v);
  26.    cout << endl << "Hay " << negativos << " numeros negativos en el vector" << endl;
  27.    cin.sync();
  28.    cin.get();
  29.    return 0;
  30. }
  31.  

Saludos
25  Programación / Programación C/C++ / Re: ayuda en turbo c++ en: 30 Noviembre 2012, 20:48 pm
Hola

Léete las normas del Foro, no se hacen tareas. Si pones lo que llevas hecho te podemos ayudar.

Saludos
26  Programación / Programación C/C++ / Re: No entiendo esta linea del programa en: 30 Noviembre 2012, 20:45 pm
Hola

Si supieras qué es y cómo se usa sabrías qué significa y qué función tiene en el programa. Léete el enlace que así es como se aprende!!

Saludos
27  Programación / Programación C/C++ / Re: Arreglo y puntero en una funcion [No me corre] en: 12 Noviembre 2012, 15:04 pm
Buenas!!!

Te he cambiado el código, a ver si es esto lo que necesitas:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define size 10
  5.  
  6. void suma(int *arreglo);
  7.  
  8. int main () {
  9.    int arreglo[size], i;
  10.    for(i = 0; i < size; i++) { //Aqui voy recorriendo el arreglo
  11.        printf("Escriba el numero\n");
  12.        scanf("%d", &arreglo[i]);  // voy guardando un dato en cada posicion del arreglo
  13.    }
  14.    suma(arreglo);  // mi funcion que trabaja con los datos de mi arreglo
  15.    while(getchar() != '\n') ; // Limpia el buffer
  16.    getchar(); // Pausa la ejecucion del programa hasta que pulses una tecla
  17.    return 0;
  18. }
  19.  
  20. void suma(int *xarreglo) { //Inicializacion de mi funcion
  21.    int sum = 0, i, pnt[size];
  22.    for(i = 0; i < size; i++) {
  23.        pnt[i] = xarreglo[i];
  24.        sum+=pnt[i];
  25.    }
  26.    printf("La suma es: %d\n", sum);
  27. }
  28.  
  29.  

Saludos!!
28  Programación / Programación C/C++ / Re: Duda con funciones en C. en: 23 Octubre 2012, 21:25 pm
Hola!!

No hace falta ninguna función, puedes hacer un casting:

Código
  1. int main() {
  2.    char c;
  3.    int i;
  4.    c = getchar();
  5.    i = (int)c;
  6.  
  7.    printf("Valor numérico de %c es %i", c, i);
  8.    return 0;
  9.  

Saludos
29  Programación / Programación C/C++ / Re: [Ayuda][C] Leer solo un caracter. en: 23 Octubre 2012, 18:58 pm
Hola!!

Puedes hacer algo como esto:
Código
  1. char opcion;
  2. ......
  3. opcion = getchar();
  4. while(getchar() != '\n') ;
  5. switch(opcion)
  6. ............
  7.  

Creo que debería funcionar.

Saludos
30  Programación / Programación C/C++ / Re: [Pequeña Ayuda] Programa que evalua a una chica segun su edad, tet4s y mas en: 23 Octubre 2012, 18:48 pm
Hola!!

Tienes que reservar memoria para nombre y para contextura, y después liberarla.

Y las cadenas de caracteres no se comparan con ==, se utiliza strcmp

Saludos
Páginas: 1 2 [3] 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ... 31
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines