Error de compilación programa c++

Iniciado por LauraD, 17 Junio 2014, 23:22 PM

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

LauraD

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

leosansan

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 (cpp) [Seleccionar]
#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! ..... !!!!



engel lex

#2
Leosansan dice lo mas acertado xD yo creía mal
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.