Bonjour, j'ai un souci avec l'écriture dans un fichier de mes résultats.
C'est un projet qui utilise la fonction tridag pour la résolution d'une matrice tridiagonal.
Voici le code:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include "tridag.h"
 
 
main()
{                                   
      double k,a,b,L,T0,Te,t,teta0;                 
      double A[100],B[100],C[100],D[100],u[100];     
      unsigned long N;
      int i,j;
      FILE *fp;                                                      
      fp=fopen("RESULTAT", "w");    
 
      printf("Entrez les valeurs de k,a,b,L,T0,Te et N\n");          
      scanf("%lf%lf%lf%lf%lf%lf%d",&k,&a,&b,&L,&T0,&Te,&N);
 
      t=(10*(2*a+2*b)*L*L)/(k*a*b);                            
      teta0=(T0-Te)/Te;
 
 
 
      for (i=1;i<N;i++){                                 
                B[i]=2+(1./N)*(1./N)*t;
                        }
                          B[N]=1+(1./N)*(1./N)*t;   
 
 
      for (i=2;i<=N;i++){                                 
                A[i]=-1;
                        }
      for (i=1;i<=(N-1);i++){                                 
                C[i]=-1;
                        }
      D[1]=teta0;
      for (i=2;i<=N;i++){                                 
                D[i]=0;
                        }
 
     tridag(A,B,C,D,u,N); 
 
 
     for (i=1;i<=N;i++){                                   
                        u[i]=Te*u[i]+Te;
                        //printf("T[%d]=%lf\n",i,u[i]);
                        fprintf(fp,"%d      %lf\n",i,u[i]);           
                            }
                        //getch();
                        fclose(fp);                                
          }
Voici également la fonction tridag:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void tridag(double a[], double b[], double c[], double r[], double u[],
	unsigned long n)
{
	unsigned long j;
	double bet,*gam;
 
	gam=(double*)malloc(n*sizeof(double));
	if (b[1] == 0.0) printf("Error 1 in tridag");
	u[1]=r[1]/(bet=b[1]);
	for (j=2;j<=n;j++) {
		gam[j]=c[j-1]/bet;
		bet=b[j]-a[j]*gam[j];
		if (bet == 0.0)	printf("Error 2 in tridag");
		u[j]=(r[j]-a[j]*u[j-1])/bet;
	}
	for (j=(n-1);j>=1;j--)
		u[j] -= gam[j+1]*u[j+1];
 
}
Pour les valeurs a entrer, dans l'ordre:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
164
4
50
40
46
20                
50
Je ne comprend pas, peut-ètre que j'utilise mal les fopen, fprintf...
Enfin le fait est que l'affichage a l'écran s'effectue, j'ai les bons résultats, mais a l'écriture, la console s'arrète.
Merci bcp d'avance.

Pour info je tourne sous xp, j'utilise dev cpp, et c'est un projet de physique, je ne suis pas informatitien donc désolé d'avance si l'erreur est bête.