al ejecutarlo me marca un error y no encuentro donde esta

Iniciado por gerardo_salas, 21 Junio 2017, 01:13 AM

0 Miembros y 1 Visitante están viendo este tema.

gerardo_salas

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 (cpp) [Seleccionar]
#include <iostream>

using namespace std;

bool EsPrimo (int x);
bool EsPar (int x);

bool EsPrimo (int x){
bool primo = false;
int num_divisibles = 0;
int y = x;

while (x > 1){
if (x%y == 0)
num_divisibles++;
y--;
}
if (num_divisibles == 2)
primo = true;
return primo;
}

bool EsPar (int x){
bool par = false;
if (x%2 == 0)
par = true;
return par;
}


int main(){
int x;
bool primo, par;
string stpar = "es par";
string stprimo = " es primo";


cout << "Indique el numero: ";
cin >> x;

while (x/10 != 0){
primo = EsPrimo (x%10);
par = EsPar (x%10);

if (primo == false)
stprimo = " no es primo";

if (par == false)
stpar = " no es par";


cout << "El numero " << x%10 << stprimo << " y " << stpar << endl;
x = x/10;

stprimo = " es primo";
stpar = "es par";
}

return 0;


}



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

engel lex

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 (cpp) [Seleccionar]
int y = x;

while (x > 1){
if (x%y == 0)
num_divisibles++;
y--;
}


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

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.