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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Ayuda con Programa numeros primos matriz
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con Programa numeros primos matriz  (Leído 10,884 veces)
Jaime1315

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Ayuda con Programa numeros primos matriz
« en: 8 Febrero 2013, 04:50 am »

HOLA A TODOS ESPERO ALGUIEN ME PUEDA AYUDAR CON UN PROBLEMA QUE TENGO..
BUENO ESTOY REALIZANDO UNA MATRIZ DE 3X3 LA CUAL ME VA A GUARDAR SOLAMENTE NUMEROS PRIMOS... CUANDO SE INGRESE UN NUMERO DEBE VERIFICAR SI ES PRIMO O NO, SI ES PRIMO LO GUARDA EN LA MATRIZ SINO MANDA UN MESAJE DE QUE NO ES PRIMO Y VUELVE A PEDIR EL NUMERO MI CODIGO ES EL SIGUIENTE:
MUCHAS GRACIAS DE ANTE MANO SALUDOS :D


Código
  1. package numprim;
  2. import java.util.*;
  3.  
  4. public class operacions {
  5.    int matriz[][]=new int[3][3];
  6.    int c,num,f,cl;
  7.    Scanner dato = new Scanner(System.in);
  8.    void sbprimo(){
  9.       f=0;
  10.       cl=0;
  11.       do{
  12.       System.out.println("Ingresa un numero primo");
  13.       num=dato.nextInt();
  14.       res();
  15.       if(res()==true){
  16.           matriz[f][cl]=num;
  17.           cl++;
  18.           c=0;
  19.       }else{System.out.println("no es primo");}
  20.       if(cl>2){
  21.           cl=0;
  22.           f++;
  23.       }
  24.  
  25.    }while((f<3)&(cl<3));
  26.        }
  27.  
  28.    public boolean res(){
  29.        for(int x=1;x<num;x++)
  30.        if(num%x==0)
  31.        c++;
  32.        if(c==2){
  33.            return true;
  34.        }else{
  35.            return false;
  36.        }
  37.    }
  38.  
  39.    void muestram(){
  40.    for(f=0;f<3;f++){
  41.        for(cl=0;cl<3;cl++){
  42.            System.out.print(matriz[f][cl]);
  43.        }
  44.        System.out.println("");
  45.    }
  46.    }
  47. }
  48.  
  49.  
  50. --------------------------------------------------------------------
  51. public class Numprim {
  52.  
  53.    /**
  54.      * @param args the command line arguments
  55.      */
  56.    public static void main(String[] args) {
  57.        operacions mm = new operacions();
  58.        System.out.println("Programa que almacena numeros primos");
  59.        mm.sbprimo();
  60.        mm.muestram();
  61.    }
  62. }
  63.  


« Última modificación: 9 Febrero 2013, 15:44 pm por Debci » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Ayuda con Programa numeros primos matriz
« Respuesta #1 en: 8 Febrero 2013, 04:58 am »

dijiste lo que tienes y quieres pero no cual es el problema :s


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Jaime1315

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Ayuda con Programa numeros primos matriz
« Respuesta #2 en: 8 Febrero 2013, 05:05 am »

dijiste lo que tienes y quieres pero no cual es el problema :s

A ok pasa que cuando ingreso  solo numeros primos no hay problema, los guarda y me imprime bien la matriz.... pero si pongo un numero par me manda que nos es primo todo bien hasta ahora pero despues cuando ingreso otro numero  no importa si es primo opar se cicla pidiendo que ingrese numeros nunca termina de pedir  :P
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Ayuda con Programa numeros primos matriz
« Respuesta #3 en: 8 Febrero 2013, 07:01 am »

no soy experto en java pero veo lo siguiente....

Código
  1. while((f<3)&(cl<3));

no deberias usar "&" sino "&&" ya que en java hasta donde recuerdo un & solo hace una operación en binario (por ejemplo 123 & 39 da 35)... en cambio && chequea el resultado y devuelve true o false... puede no se el factor pero nunca está de más hacelo bien porque ese "&" puede retornar valores inesperados (como null pointer exeption y locuras así...)

puedes poner algo como
Código
  1. System.out.println(f);
  2. System.out.println(cl);
  3.    }while((f<3)&(cl<3));

y ve si están avanzando apropiadamente f y cl

por otro lado este tipo de operaciones está bien, pero recomiendo colocarle sus llaves "{ }" para asegurarte que no te equivocas en el control de flujo

Código
  1. for(int x=1;x<num;x++)
  2.        if(num%x==0)
  3.        c++;


por ultimo creo que este es tu error
x<num
Código
  1. for(int x=1;x<num;x++)
  2.        if(num%x==0)
  3.        c++;

ya que si ingresaste 5, el revisará del 1 al 4 (x < 5) asi que en un numero primo, c solo será 1 y nunca 2


lo ultimo que puedes usar es... para saber si un numero es primo, solo debes probar con los números enteros menores a su raíz cuadrada (si es entero e igual, entonces obviamente no es primo) y no es necesario contar el 1...

prueba esos cambios y avisas... yo mañana reviso es tarde para mi D: (1:30am)
« Última modificación: 8 Febrero 2013, 07:03 am por engelx » En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: Ayuda con Programa numeros primos matriz
« Respuesta #4 en: 9 Febrero 2013, 01:54 am »

Hola,

Soy principiante en Java también, pero tu código no hacía lo que querías. Tu forma de saber si un numero era primo o no era incorrecta.

Aquí te dejo tu código un poco retocado y comentado, trata de comentar lo mas posible tu codigo, asi cualquiera entendera exactamente lo que quieres hacer.

Código
  1. import java.util.Scanner;
  2.  
  3. public class operacions {
  4.  
  5.    // creamos la matriz para almacenar los numeros primos
  6.    private int matriz[][]=new int[3][3];
  7.     private int num,f,cl; // creamos las variables numero, fila y columa
  8.     boolean permanencia = true; //creamos la variable de permanencia en el ciclo
  9.  
  10.    Scanner dato = new Scanner(System.in);
  11.  
  12.    void sbprimo(){
  13.       f=0; // inicializamos fila en 0
  14.       cl=0; // inicializamos columna en 0
  15.  
  16.       // pedimos que se ingrese el primer numero
  17.       System.out.println("Ingrese numeros primos o 0 para salir");
  18.       num = dato.nextInt();
  19.  
  20.       //si el numero ingresado es 0, imprimimos un mensaje de salida
  21.       if(num == 0)
  22.       {
  23.         System.out.println("No se ingresaron datos");
  24.       }
  25.  
  26.       // si el numero ingresado es primo se hace el codigo correspondiente:
  27.       if(num!=0)
  28.       {
  29.        // hacemos un bucle do - while que se ejecutara mientras permanencia sea true.
  30.        do{
  31.  
  32.       // le pasamos el numero ingresado por parametro al metodo 'res' para saber si es primo
  33.       res(num);
  34.  
  35.       // si es primo, agregamos el numero ingresado a la fila '0' columna '0'
  36.       if(res(num)==true){
  37.           matriz[f][cl]=num;
  38.           cl++; // Y aumentamos columna en 1
  39.  
  40.       // si no es primo, mostramos un mensaje para que se ingrese nuevamente el numero
  41.       }else{
  42.  
  43.         System.out.println("No es primo. Ingrese nuevamente un numero o 0 para salir");  
  44.       }
  45.  
  46.         // pedimos nuevamente otro numero
  47.         num = dato.nextInt();
  48.         if(num == 0) // si el nuevo numero ingresado es '0', permanencia sera false,
  49.                      // terminando así el procoeso
  50.          permanencia = false;
  51.  
  52.         // si ya se han ingresado las 3 columnas en la fila actual
  53.         // aumentamos fila en 1 y reseteamos columna a 0
  54.         if(cl>2){
  55.           cl=0;
  56.           f++;
  57.       }
  58.         // cuando ya no haya filas para procesar, terminamos el proceso
  59.         if(f>2)
  60.         {
  61.           permanencia = false;
  62.         }
  63.  
  64.  
  65.     // este proceso se ejecutara solo si permanencia es true
  66.    }while( (permanencia == true));
  67.   }
  68.  
  69.    // una vez qu acabe el proceso, imprimimos un mensaje de adios
  70.    System.out.println("\nHa decidido salir del programa. Adios");
  71.  
  72.  
  73.    muestram(); // e imprimimos los nuevos resultados
  74.  } // fin del metodo sbprimo
  75.  
  76.    public boolean res(int numx){
  77.        int aux; // esta variable nos ayudara a saber si el numero es primo
  78.        for(int cont = 2; cont<numx; cont++)
  79.        {
  80.         aux = numx % cont; // guardamos en 'aux' el modulo del numero y contador
  81.         if(aux == 0)
  82.         return false; // si resulta que los numeros entre
  83.                       // 1 y el numero-1, da residuo 0, devuelve false
  84.        }
  85.         return true; // si no, devolvemos true, indicando que es primo
  86.  
  87.        } // fin del metodo
  88.  
  89.    // mostramos los resultados de la nueva matriz
  90.    void muestram(){
  91.        System.out.println("\nResultados: \n");
  92.     // itera a travez de la matriz
  93.    for(f=0;f<matriz.length;f++){
  94.        // itera a traves de la fila actual
  95.        for(cl=0;cl<matriz[f].length;cl++){
  96.            System.out.print(matriz[f][cl]+" "); // imrpime la matriz
  97.        }
  98.        System.out.println(""); // nueva linea
  99.    }
  100.    } // fin del metodo
  101.  
  102. } // fin
« Última modificación: 9 Febrero 2013, 20:15 pm por Randomized » En línea

Jaime1315

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Ayuda con Programa numeros primos matriz
« Respuesta #5 en: 9 Febrero 2013, 02:13 am »

Hola nuevamente a todos muchas gracias por los comentarios recibidos, ayer pude resolver el problema de manera parecida en que lo resolvió Randomized muchas gracias por el comentario y pues en un ratito mas les subo el programa como tal para que  puedan ver como lo resolvi y casi de manera similar al de  Randomized :D y mil gracias por las respuestas :P
En línea

Jaime1315

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Ayuda con Programa numeros primos matriz
« Respuesta #6 en: 9 Febrero 2013, 05:08 am »

Citar

package numprim;
import java.util.*;
/**
 *
 * @author jimmybibi
 */
public class operacions {
    int matriz[][]=new int[3][3];
    int c,num,f,cl;
    Scanner dato = new Scanner(System.in);
    void sbprimo(){
       f=0;
       cl=0;
       do{
       System.out.println("Ingresa un numero primo");
       num=dato.nextInt();
       res();
       if(res()==true){
           matriz[f][cl]=num;
           cl++;
           c=0;
       }else{
           System.out.println("no es primo");
            c=0;
            }
       if(cl>2){
           cl=0;
           f++;
       }
       
    }while((f<3)&(cl<3));
        }
   
    public boolean res(){
        for(int x=1;x<num;x++) {
            if(num%x==0) {
                c++;
            }
        }
        if(c==2){
            return true;
        }
        else{
            return false;
        }
    }
   
    void muestram(){
    for(f=0;f<3;f++){
        for(cl=0;cl<3;cl++){
            System.out.print("["+matriz[f][cl]+"]");
        }
        System.out.println("");
    }
    }
}


------------------------------------------------------------------------

package numprim;

/**
 *
 * @author jimmybibi
 */
public class Numprim {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        operacions mm = new operacions();
        System.out.println("Programa que almacena numeros primos");
        mm.sbprimo();
        mm.muestram();
    }
}
]

En línea

Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: Ayuda con Programa numeros primos matriz
« Respuesta #7 en: 9 Febrero 2013, 13:58 pm »

Se ve bien. Podrías poner la salida del algoritmo? para ver su funcionamiento :)

Pd: Coloca los codigos entre code == java TU CODIGO  /code.

code == java va encerrado entre [] y  /code tambien.

esto:

Código
  1. while((f<3)&(cl<3));

Se simplifica a:

Código
  1. while(f<3); // iterará solo si hay filas que recorrer. Si f>=3, el bucle termina
  2.  

Saludos.
« Última modificación: 9 Febrero 2013, 14:10 pm por Randomized » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines