1 2 3 4 5 6 7 8 9
| OPEN (UNIT=50,FILE='sourceO.txt')
DO 1001 S=1,280
READ (50,*)LTEST, ATEST
IF ((L.NE.LTEST).AND.(NUMSPC.EQ.3)) GOTO 1001
ATERM = 0.0
BTERM = 0.0
GOTO 1002
1001 CONTINUE
1002 CLOSE(50) |
Deviendrait (si transformée en procédure) :
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
| #include <stdlib.h>
#include <stdio.h>
void MaFonction ( int L, int NUMSPC, double *ATERM, double *BTERM )
{
FILE *Fichier= NULL ;
char Ligne[1000] ;
int i ;
int LTEST ;
float ATEST ;
Fichier = fopen ( "sourceO.txt", "r" );
if ( Fichier != NULL )
{
while ( fgets ( Ligne, 999, Fichier) != NULL )
{
if ( sscanf ( Ligne, "%d %g", <EST, &ATEST ) == 2 )
{
if ( ! ((LTEST != L) && (NUMSPC == 3)) )
{
*ATERM = 0.0 ;
*BTERM = 0.0 ;
break ;
}
}
}
fclose ( Fichier );
} |
Fonction qui doit être appelée comme :
MaFonction ( L, NUMSPC, &ATERM, &BTERM );
Par contre :
a) il est possible d'optimiser le if...
b) il serait souhaitable de passer le nom du fichier en paramètre...
du style :
MaFonction ( "source0.txt", L, NUMSPC, &ATERM, &BTERM );
Avec une définition comme :
1 2 3 4 5 6 7 8 9 10 11
| void MaFonction ( char *Filename, int L, int NUMSPC, double *ATERM, double *BTERM )
{
FILE *Fichier= NULL ;
char Ligne[1000] ;
int i ;
int LTEST ;
float ATEST ;
Fichier = fopen ( Filename, "r" );
if ( Fichier != NULL )
.. |
Partager