Foros del Web » Programación para mayores de 30 ;) » C/C++ »

No sé que pasa

Estas en el tema de No sé que pasa en el foro de C/C++ en Foros del Web. Muy buenas gente. Estoy haciendo un programa el cual me devuelva una cantidad de números primos, es decir, el usuario pone el numero 5 y ...
  #1 (permalink)  
Antiguo 30/08/2014, 13:17
 
Fecha de Ingreso: abril-2012
Ubicación: Malaga
Mensajes: 46
Antigüedad: 12 años, 8 meses
Puntos: 0
No sé que pasa

Muy buenas gente.
Estoy haciendo un programa el cual me devuelva una cantidad de números primos, es decir, el usuario pone el numero 5 y sale los 5 primeros números primos.
El problema que tengo es que cuando introduce el número el usuario, el programa se queda tal cuál y se cierra.
A ver si alguno me puede echar una manilla xDD
Os dejo el código
Código C++:
Ver original
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main() {
  5.     int num,numPrimos,num1=1,cont=0;
  6.     cout<<"Introduzca el numero de primos para ver: ";
  7.     cin>>num;
  8.     do
  9.     {
  10.  
  11.         for(int i=0;i<=num1;i++)
  12.         {
  13.             if(num1%i==0)
  14.             {
  15.                 cont++;
  16.             }
  17.             if(cont<=2)
  18.             {
  19.                 cout<<num<<",";
  20.                 numPrimos++;
  21.             }
  22.         }
  23.         num1++;
  24.     }
  25.     while(numPrimos<=num);
  26.     return 0;
  27. }

Saludos
  #2 (permalink)  
Antiguo 31/08/2014, 06:58
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 11 años, 2 meses
Puntos: 38
Respuesta: No sé que pasa

antes del return 0; pones cin.ignore() que equivale al comando system("pause"), eso hace que el programa se pause antes de cerrar.
  #3 (permalink)  
Antiguo 31/08/2014, 13:21
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 14 años, 2 meses
Puntos: 10
Respuesta: No sé que pasa

A lo dicho por vangodp añado dos sitios en los que el programa te da error y por ello se te cierra:
Código C++:
Ver original
  1. num1%i==0
Esto te está provocando una división por 0
y
Código C++:
Ver original
  1. while(numPrimos<=num);
Al no tener asignado nigún valor a la variable numPrimos esta condición no funcionará, o no lo hará correctamente.

Por otro lado el planteamiento del algoritmo no parece funcionar. ¿Cual era la idea?
Saludos
  #4 (permalink)  
Antiguo 31/08/2014, 14:09
 
Fecha de Ingreso: abril-2012
Ubicación: Malaga
Mensajes: 46
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: No sé que pasa

Siiiii ya funciona, gracias chico.
Asi queda mi codigo:
Código C++:
Ver original
  1. int main() {
  2.     int num,numPrimos=0,num1=1,cont=0;
  3.     cout<<"Introduzca el numero de primos para ver: ";
  4.     cin>>num;
  5.     cout<<"Vamos a visualizar los "<<num<<" primeros numeros primos: ";
  6.     do
  7.     {
  8.  
  9.         for(int i=1;i<=num1;i++)
  10.         {
  11.             if(num1%i==0)
  12.             {
  13.                 cont++;
  14.  
  15.             }
  16.  
  17.         }
  18.         if(cont<=2)
  19.         {
  20.             cout<<num1<<",";
  21.             numPrimos++;
  22.         }
  23.         num1++;
  24.         cont = 0;
  25.     }
  26.     while(numPrimos<num);
  27.     return 0;
  28. }
Y la salida que da es la siguiente:

Introduzca el numero de primos para ver: 6
Vamos a visualizar los 6 primeros numeros primos: 1,2,3,5,7,11,

Etiquetas: int, nose, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:11.