Segmentation fault en c

Fermé
bougou - Modifié par bougou le 7/05/2010 à 10:08
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 7 mai 2010 à 14:31
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;

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
0
Alors que dois-je faire?je suis novice en programmation
0
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 ?
0
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é.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
7 mai 2010 à 14:31
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.
0