Hola a todos!
Tengo el siguiente programa, el cual almacena los primeros 30 números primos en un arreglo implementando funciones..
Al compilar no muestra error alguno y se ejecuta el programa pero al mostrarse la pantalla con los respectivos números, se presenta una ventana de windows indicando que el "ejecutable dejo de funcionar" y no sé por qué!
Les agradeceria si pudieran ayudarme!
Aquí esta el código..
#include<cstdlib>
#include<iostream>
using namespace std;
void Primos()
{
int n;
int p;
int nc;
int Primos[30];
nc = 0 ;
n = 2;
cout<<"Los primeros 30 numeros primos son:"<<endl<<endl;
while(n <= 115)
{
for (p = 2; n % p!= 0; p++);
if (p == n)
{
Primos[p]=n;
cout << Primos [p]<<", ";
if(++nc % 10 == 0)
cout << "\n" << endl;
}
n++;
}
cout << "\n" << endl;
}
int main()
{
Primos();
system ("PAUSE");
return EXIT_SUCCESS;
}
El error se debe al manejo del índice de la matriz, que se va más allá de 30, tal como lo tienes (observa si no que inicias con p=2) y se va a 113, mucho mayor que los 30 que tienes declarados.
Con ese detalle corregido e indentando el código un poquitito mejor, creo:
#include<cstdlib>
#include<iostream>
using namespace std;
void Primos(){
int n = 2, k = 0, p, nc = 0, Primos[30];
cout << "Los primeros 30 numeros primos son:" << endl << endl;
while( n <= 115 ){
for ( p = 2; n % p != 0; p++ );
if ( p == n ){
cout << n <<", ";
Primos[k]= n;
cout << Primos [k++] << ", ";
if( ++nc % 10 == 0 )
cout << endl << endl;
}
n++;
}
cout << endl << endl;
}
int main(){
Primos();
system ("PAUSE");
return EXIT_SUCCESS;
}
¡¡¡¡ Saluditos! ..... !!!!
(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)
Leosansan dice lo mas acertado xD yo creía mal