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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  al ejecutarlo me marca un error y no encuentro donde esta
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: al ejecutarlo me marca un error y no encuentro donde esta  (Leído 2,272 veces)
gerardo_salas

Desconectado Desconectado

Mensajes: 1


Ver Perfil
al ejecutarlo me marca un error y no encuentro donde esta
« en: 21 Junio 2017, 01:13 am »

este programa me deberia dar los numeros primos o no o sin son par o no, pero al ejecutarlo me marca un error y no encuentro donde esta, me podrian ayudar a encontrar el error?  gracias

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. bool EsPrimo (int x);
  6. bool EsPar (int x);
  7.  
  8. bool EsPrimo (int x){
  9. bool primo = false;
  10. int num_divisibles = 0;
  11. int y = x;
  12.  
  13. while (x > 1){
  14. if (x%y == 0)
  15. num_divisibles++;
  16. y--;
  17. }
  18. if (num_divisibles == 2)
  19. primo = true;
  20. return primo;
  21. }
  22.  
  23. bool EsPar (int x){
  24. bool par = false;
  25. if (x%2 == 0)
  26. par = true;
  27. return par;
  28. }
  29.  
  30.  
  31. int main(){
  32. int x;
  33. bool primo, par;
  34. string stpar = "es par";
  35. string stprimo = " es primo";
  36.  
  37.  
  38. cout << "Indique el numero: ";
  39. cin >> x;
  40.  
  41. while (x/10 != 0){
  42. primo = EsPrimo (x%10);
  43. par = EsPar (x%10);
  44.  
  45. if (primo == false)
  46. stprimo = " no es primo";
  47.  
  48. if (par == false)
  49. stpar = " no es par";
  50.  
  51.  
  52. cout << "El numero " << x%10 << stprimo << " y " << stpar << endl;
  53. x = x/10;
  54.  
  55. stprimo = " es primo";
  56. stpar = "es par";
  57. }
  58.  
  59. return 0;
  60.  
  61.  
  62. }
  63.  


· Los códigos deben ir en etiquetas GeSHi
· No se debe escribir en mayúsculas
>aquí las reglas del foro
-Engel Lex


« Última modificación: 21 Junio 2017, 01:19 am por engel lex » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: al ejecutarlo me marca un error y no encuentro donde esta
« Respuesta #1 en: 21 Junio 2017, 01:37 am »

el codigo me paerece que es muy optimizable, por ejemplo, es obvio que el numero es divisible entre 1, por lo tanto no es necesario ver si hay 2, divisibles, pero no entiendo el while x/10...

pero más allá de eso el error está aquí, desde la linea 13
Código
  1. int y = x;
  2.  
  3. while (x > 1){
  4. if (x%y == 0)
  5. num_divisibles++;
  6. y--;
  7. }

disminuyes y que es el divisor, por consecuencia terminas dividiendo entre 0 y en un ciclo infinito, porque x siempre será el mismo valor , si cambias atento a los divisibles... nada más sera 1



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.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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