Segmentation fault en c
bougou
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
slt a tous j'ai un soucis avec mon programme,ça compile bien mais le problème est au niveau de l'exécution,il m'affiche segmentation fault.Je vous laisse le code source
#include <math.h>
#include <stdio.h>
int main()
{
int i,j,Nz,Nt;
long double Na[1000][1000],Ne[1000][1000];
double N,deltaz,deltat,E,mua,mue,d,T;
FILE* ecrit1;
ecrit1= fopen("sortie.txt","w");
/*Données physiques*/
/*mua=3.0e-3;*/
/*mue=3.0e-2;*/
/*paramètres du calcul*/
E=1.0e3;
N=50.0;
d=1.0;
Nt=100;
Nz=100;
T=10.0*d/(mue*E);
deltaz=d/Nz*1.0;
deltat=T/Nt*1.0;
for(i=0;i<=Nz;i++)
{
Na[i][0]=N;
Ne[i][0]=N;
}
for(j=0;j<=Nt;j++)
{
Na[0][j]=0;
Ne[1][j]=0;
}
for(j=0;j<=Nt;j++)
{
for(i=0;i<=Nz;i++)
{
Ne[i][j+1]=0;
Na[i][j+1]=0;
Ne[i][j+1]=(1-(E*deltat)/deltaz)*Ne[i][j]+ (E*deltat/deltaz)*Ne[i+1][j];
Na[i][j+1]=(1-(E*deltat)/deltaz)*Ne[i][j]+ (E*deltat/deltaz)*Ne[i-1][j];
}
}
fprintf( ecrit1,"%i %i %e %e\n",i,j,Na[i][j],Ne[i][j]);
fclose(ecrit1);
return 0;
#include <math.h>
#include <stdio.h>
int main()
{
int i,j,Nz,Nt;
long double Na[1000][1000],Ne[1000][1000];
double N,deltaz,deltat,E,mua,mue,d,T;
FILE* ecrit1;
ecrit1= fopen("sortie.txt","w");
/*Données physiques*/
/*mua=3.0e-3;*/
/*mue=3.0e-2;*/
/*paramètres du calcul*/
E=1.0e3;
N=50.0;
d=1.0;
Nt=100;
Nz=100;
T=10.0*d/(mue*E);
deltaz=d/Nz*1.0;
deltat=T/Nt*1.0;
for(i=0;i<=Nz;i++)
{
Na[i][0]=N;
Ne[i][0]=N;
}
for(j=0;j<=Nt;j++)
{
Na[0][j]=0;
Ne[1][j]=0;
}
for(j=0;j<=Nt;j++)
{
for(i=0;i<=Nz;i++)
{
Ne[i][j+1]=0;
Na[i][j+1]=0;
Ne[i][j+1]=(1-(E*deltat)/deltaz)*Ne[i][j]+ (E*deltat/deltaz)*Ne[i+1][j];
Na[i][j+1]=(1-(E*deltat)/deltaz)*Ne[i][j]+ (E*deltat/deltaz)*Ne[i-1][j];
}
}
fprintf( ecrit1,"%i %i %e %e\n",i,j,Na[i][j],Ne[i][j]);
fclose(ecrit1);
return 0;
5 réponses
a ta premiere boucle, i arrive a 100.
lors de ta denriere boucle, il prend +100 pour chaque valeur de j.
Au bout d'un moment, il dépasse les bornes
lors de ta denriere boucle, il prend +100 pour chaque valeur de j.
Au bout d'un moment, il dépasse les bornes
Et bien ça dépend, tes tableaux ils doivent faire combien par combien ? parceque tu les définie avec une taille de 1000, mais tu te sers que de 100 itérations, sans initialiser les itérateurs, je comprend pas trop ce que tu cherches a faire.
C'est quoi l'énoncé de ton exercice ?
C'est quoi l'énoncé de ton exercice ?
le but est de suivre l'évolution de la densité d'électron Ne et d'ion Na après ionisation entre deux électrodes, distantes de d, avec les conditions aux limites Ne=0 en d et Na=0 en o et la condition initiale Ne=N=Na à t=0,selon l'équation de transport:
(dNe/dt)-mue*E*(dNe/dz)=0, pareil pour les ions (dNa/dt)-mua*E*(dNa/dz)=0 où mua et mue sont les mobilités electrons et ions et E le champ electrique generé.
(dNe/dt)-mue*E*(dNe/dz)=0, pareil pour les ions (dNa/dt)-mua*E*(dNa/dz)=0 où mua et mue sont les mobilités electrons et ions et E le champ electrique generé.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
en gras l'erreur :
for(j=0;j<=Nt;j++) { for(i=0;i<=Nz;i++) { Ne[i][j+1]=0; Na[i][j+1]=0; Ne[i][j+1]=(1-(E*deltat)/deltaz)*Ne[i][j]+ (E*deltat/deltaz)*Ne[i+1][j]; Na[i][j+1]=(1-(E*deltat)/deltaz)*Ne[i][j]+ (E*deltat/deltaz)*Ne[i-1][j]; } }lorsque i=0 appel à Ne[-1]. pas mal d'erreurs d'algorithme sinon.