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 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
|
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <assert.h>
#define vrai 1
#define faux 0
#define chemin_fichier_section "D:\\fichier_section.txt"
#define chemin_fichier_procede "D:\\fichier_procede.txt"
#define chemin_fichier_article "D:\\fichier_article.txt"
#define chemin_fichier_machine "D:\\fichier_machine.txt"
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;
struct liste_composant* svt;
}liste_composant;
typedef struct noeud_compose // noeud de l'arbre des procedures
{
int code_compose;
liste_composant* les_composants;
struct noeud_compose* fg;
struct noeud_compose* fd;
}noeud_compose;
typedef noeud_compose* procede;
// 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 .
} |