Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: poliche en 11 Octubre 2016, 17:57 pm



Título: Por qué mi programa crashea?
Publicado por: poliche en 11 Octubre 2016, 17:57 pm
Hola estoy construyendo un nuevo programa y no entiendo por qué crashea, ya que es un programa muy simple. No se si tiene que ver con un problema a la hora de programar o es un problema del compilador, pero al ejecutar obtengo el mensaje "process exited with return value 3221226356". Si alguien me puede ayudar.

Código:

Código
  1. //New_problem_1
  2.  
  3. #include<iostream>
  4. #include<vector>
  5.  
  6.  
  7. using namespace std;
  8.  
  9. const double rho1=1500.0, rho2=1600.0, rho3=1900.0, rho4=2500.0; //densities(kg/m3)
  10. const double cp1=750.0, cp2=770.0, cp3=810.0, cp4=930.0; //cp (J/kg*K)
  11. const double k1=170.0, k2=140.0, k3=200.0, k4=140.0; //thermic_conductivity (W/m*K)
  12. const double alpha=9.0, Tg=33+273; //heat_transfer_coefficient_and_temperature_of_external_gas
  13. const double q_top=60.0; //Q_flow_on_the_top_considered_outgoing
  14. double k12=0.0, k13=0.0, k32=0.0, k24=0.0, k34=0.0; //heat_transfer_coefficients_internal_borders
  15. const double t_step=1.0; //time_discretitzation
  16. const double L=1.1, H=0.8; //geometric_definition
  17. const double T0=281.0; //initial_temperature
  18. const int Nx=11, Ny=8; //control_volumes_(horitzontal_vertical)
  19. const double Ax=L/Nx, Ay=H/Ny; //nodes_separation
  20.  
  21. int main(){
  22.  
  23. vector<double> Xnode(Nx+1,0.0), Ynode(Ny+1,0.0); //nodes_position_vectors
  24. vector<vector<double> > T_bef_calc(Nx+1,vector<double>(Ny+1,0.0)); //T(n)_calculated
  25. vector<vector<double> > T_now_est(Nx+1,vector<double>(Ny+1,0.0)); //T(n+1)_estimated
  26. vector<vector<double> > T_now_calc(Nx+1,vector<double>(Ny+1,0.0)); //T(n+1)_calculated
  27.  
  28. //geometric_definition
  29.  
  30. Xnode[0]=0;
  31. Xnode[1]=Ax/2;
  32. Xnode[Nx+1]=L;
  33. for (int i=2;i<=Nx+1;i++){
  34. Xnode[i]=Xnode[i-1]+Ax;
  35. }
  36.  
  37. Ynode[0]=0;
  38. Ynode[1]=Ay/2;
  39. Ynode[Ny+1]=H;
  40.  
  41. for (int i=2;i<=Ny+1;i++){
  42. Ynode[i]=Ynode[i-1]+Ay;
  43. }
  44.  
  45. //Initialitzation_of_temperatures
  46.  
  47. for (int i=0;i<=1;i++){
  48. for (int j=0; j<=1; j++){
  49. T_bef_calc[i][j]=T0;
  50. }
  51. }
  52.  
  53. return 0;
  54. }


Mod: Los códigos deben ir en etiquetas GeSHi


Título: Re: Por qué mi programa crashea?
Publicado por: engel lex en 11 Octubre 2016, 22:48 pm
intentaste usar el debugger de tu IDE para analizarlo?


Título: Re: Por qué mi programa crashea?
Publicado por: ivancea96 en 11 Octubre 2016, 23:16 pm
Código
  1. vector<double> Xnode(Nx+1,0.0), Ynode(Ny+1,0.0); //nodes_position_vectorstion
  2. Xnode[0]=0;
  3. Xnode[1]=Ax/2;
  4. Xnode[Nx+1]=L;
  5. for (int i=2;i<=Nx+1;i++){
  6. Xnode[i]=Xnode[i-1]+Ax;
  7. }
Si el tamaño de Xnode es Nx+1, entonces su último elemento es Nx (Nx+1-1). Estás accediendo a un elemento fuera del rango.