Autor
|
Tema: Ayuda con Programa numeros primos matriz (Leído 11,234 veces)
|
Jaime1315
Desconectado
Mensajes: 7
|
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 package numprim; import java.util.*; 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");} 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 ]); } } } } -------------------------------------------------------------------- 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(); } }
|
|
« Última modificación: 9 Febrero 2013, 15:44 pm por Debci »
|
En línea
|
|
|
|
engel lex
|
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
Mensajes: 7
|
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
|
|
|
En línea
|
|
|
|
engel lex
|
no soy experto en java pero veo lo siguiente.... 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 }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 for(int x=1;x<num;x++) if(num%x==0) c++;
por ultimo creo que este es tu error x<num for(int x=1;x<num;x++) if(num%x==0) 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
|
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. import java.util.Scanner; public class operacions { // creamos la matriz para almacenar los numeros primos private int matriz[][]=new int[3][3]; private int num,f,cl; // creamos las variables numero, fila y columa boolean permanencia = true; //creamos la variable de permanencia en el ciclo Scanner dato = new Scanner (System. in); void sbprimo(){ f=0; // inicializamos fila en 0 cl=0; // inicializamos columna en 0 // pedimos que se ingrese el primer numero System. out. println("Ingrese numeros primos o 0 para salir"); num = dato.nextInt(); //si el numero ingresado es 0, imprimimos un mensaje de salida if(num == 0) { System. out. println("No se ingresaron datos"); } // si el numero ingresado es primo se hace el codigo correspondiente: if(num!=0) { // hacemos un bucle do - while que se ejecutara mientras permanencia sea true. do{ // le pasamos el numero ingresado por parametro al metodo 'res' para saber si es primo res(num); // si es primo, agregamos el numero ingresado a la fila '0' columna '0' if(res(num)==true){ matriz[f][cl]=num; cl++; // Y aumentamos columna en 1 // si no es primo, mostramos un mensaje para que se ingrese nuevamente el numero }else{ System. out. println("No es primo. Ingrese nuevamente un numero o 0 para salir"); } // pedimos nuevamente otro numero num = dato.nextInt(); if(num == 0) // si el nuevo numero ingresado es '0', permanencia sera false, // terminando así el procoeso permanencia = false; // si ya se han ingresado las 3 columnas en la fila actual // aumentamos fila en 1 y reseteamos columna a 0 if(cl>2){ cl=0; f++; } // cuando ya no haya filas para procesar, terminamos el proceso if(f>2) { permanencia = false; } // este proceso se ejecutara solo si permanencia es true }while( (permanencia == true)); } // una vez qu acabe el proceso, imprimimos un mensaje de adios System. out. println("\nHa decidido salir del programa. Adios"); muestram(); // e imprimimos los nuevos resultados } // fin del metodo sbprimo public boolean res(int numx){ int aux; // esta variable nos ayudara a saber si el numero es primo for(int cont = 2; cont<numx; cont++) { aux = numx % cont; // guardamos en 'aux' el modulo del numero y contador if(aux == 0) return false; // si resulta que los numeros entre // 1 y el numero-1, da residuo 0, devuelve false } return true; // si no, devolvemos true, indicando que es primo } // fin del metodo // mostramos los resultados de la nueva matriz void muestram(){ System. out. println("\nResultados: \n"); // itera a travez de la matriz for(f=0;f<matriz.length;f++){ // itera a traves de la fila actual for(cl=0;cl<matriz[f].length;cl++){ System. out. print(matriz [f ][cl ]+" "); // imrpime la matriz } System. out. println(""); // nueva linea } } // fin del metodo } // fin
|
|
« Última modificación: 9 Febrero 2013, 20:15 pm por Randomized »
|
En línea
|
|
|
|
Jaime1315
Desconectado
Mensajes: 7
|
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 y mil gracias por las respuestas
|
|
|
En línea
|
|
|
|
Jaime1315
Desconectado
Mensajes: 7
|
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
|
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: while((f<3)&(cl<3));
Se simplifica a: while(f<3); // iterará solo si hay filas que recorrer. Si f>=3, el bucle termina
Saludos.
|
|
« Última modificación: 9 Febrero 2013, 14:10 pm por Randomized »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Problema con programa para hallar numeros primos
Programación C/C++
|
Caster
|
6
|
4,525
|
24 Mayo 2014, 19:04 pm
por leosansan
|
|
|
Problema simple con programa números primos
Programación C/C++
|
jamatbar
|
9
|
6,320
|
12 Agosto 2014, 05:29 am
por leosansan
|
|
|
Por favor ayuda con un programa en C, números primos
« 1 2 »
Programación C/C++
|
rod89
|
10
|
6,862
|
9 Noviembre 2014, 17:31 pm
por daryo
|
|
|
crear una matriz de 10x10 de forma aleatoria con numeros primos
Programación C/C++
|
piyor6
|
1
|
6,114
|
29 Marzo 2018, 05:38 am
por Yuki
|
|
|
Ayuda con programa que determine los numeros primos en un rango a,b en C
Programación C/C++
|
acer-x
|
5
|
10,305
|
10 Junio 2018, 22:32 pm
por 0xFer
|
|