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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
|
typedef struct information_composant //c pour l'arbre des procedures
{
int code_composant;
float qte;
int code_section_usinage;
int temps_integration_composant ;
}information_composant;
typedef struct liste_composant //ça aussi
{
information_composant info_composant;
liste_composant* svt;
}liste_composant;
// fct qui ajoute la struct composant dans la liste chainée
void ajouter_fin_liste_composant(liste_composant** l_c,information_composant c)
{
liste_composant* temp=*l_c;
if (temp==NULL)
{
(*l_c)=(liste_composant*)malloc(sizeof(liste_composant*));
(*l_c)->info_composant=c;
(*l_c)->svt=NULL;
}
else
{
while(temp->svt!=NULL)
{temp=temp->svt;}
temp->svt=(liste_composant*)malloc(sizeof(liste_composant*));
temp->svt->info_composant=c;
temp->svt->svt=NULL;
}
}
//fct qui chagre le contenu du fichier
noeud_compose* charger_fichier_procede(FILE* fichier_procede)
{
noeud_compose* procede=NULL;
int x,code_compose,entre=vrai;
liste_composant *l_c=NULL;
information_composant composant;
char test[5],valeur[35];
assert(fichier_procede!=NULL);
do//tant que x=!EOF le scan du fichier continue
{
x=fscanf(fichier_procede,"%s %s",&test,&valeur); // le probleme se
//situe ici lorsque le prog passe de cette instruction au if
//composant.code_composant change de valeur et prend 0 !!!
if (strcmp(test,"code")==0 && strcmp(valeur,"compose")==0)
{
x=fscanf(fichier_procede,"%s",&valeur);
code_compose=atoi(valeur);// conversion en valeur
//numerique
}
else
{
do // lecture des caracteristiques des composant tant qu'on
//n'a pas atteint la fin du fichier
{
entre=faux;
if (strcmp(test,"code")==0 &&
strcmp(valeur,"composant")==0)
{
x=fscanf(fichier_procede,"%s",&valeur);
composant.code_composant=atoi(valeur);
entre=vrai;
strcpy(test," ");// re-initialisation de test && valeur
strcpy(valeur," ");
}
if (strcmp(test,"quantite")==0)
{
composant.qte=(float)atof(valeur);
entre=vrai;
strcpy(test," ");
strcpy(valeur," ");
}
if (strcmp(test,"code")==0 &&
strcmp(valeur,"section")==0)
{
x=fscanf(fichier_procede,"%s %s
%s",&valeur,&valeur,&valeur);
composant.code_section_usinage=atoi(valeur);
entre=vrai;
strcpy(test," ");
strcpy(valeur," ");
}
if ( strcmp(test,"temps")==0)
{
x=fscanf(fichier_procede,"%s
%s",&valeur,&valeur);
composant.temps_integration_composant=atoi(valeur);
entre=vrai;
ajouter_fin_liste_composant(&l_c,composant);
// ajout des caracteristiques // dans la liste
strcpy(test," ");
strcpy(valeur," ");
}
}
while (entre==vrai);
}
} while(x!=EOF);
return (procede);// ici procede==NULL prcq je n'ai pas encore ecrit la //fct qui ajoute la liste dans l'arbre des procedes .
} |
Partager