Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: LauraD en 17 Junio 2014, 23:22 pm



Título: Error de compilación programa c++
Publicado por: LauraD en 17 Junio 2014, 23:22 pm
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..

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;
}


Título: Re: Error de compilación programa c++
Publicado por: leosansan en 18 Junio 2014, 00:11 am
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:

Código
  1. #include<cstdlib>
  2. #include<iostream>
  3.  
  4. using namespace std;
  5.  
  6. void Primos(){
  7.  int n = 2, k = 0, p, nc = 0, Primos[30];
  8.  cout << "Los primeros 30 numeros primos son:" << endl << endl;
  9.  while( n <= 115 ){
  10.    for ( p = 2; n % p != 0; p++ );
  11.    if ( p == n ){
  12.      cout << n <<", ";
  13.      Primos[k]= n;
  14.      cout << Primos [k++] << ", ";
  15.      if( ++nc % 10 == 0 )
  16.        cout << endl << endl;
  17.    }
  18.    n++;
  19.  }
  20.  cout << endl << endl;
  21. }
  22.  
  23. int main(){
  24.  Primos();
  25.  system ("PAUSE");
  26.  return EXIT_SUCCESS;
  27. }

¡¡¡¡ Saluditos! ..... !!!!


(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)


Título: Re: Error de compilación programa c++
Publicado por: engel lex en 18 Junio 2014, 00:13 am
Leosansan dice lo mas acertado xD yo creía mal