forked from ing2-paris-classroom-2023-2024/optimisation-d-une-ligne-d-assemblage-ing2-tg-2023-2024-14-4
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinitialisation.c
66 lines (62 loc) · 3.13 KB
/
initialisation.c
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
//
// Created by amaur on 13/11/2023.
//
#include "Header_general.h"
int indice(int valeurdelaction,t_assemblage voiture){
for (int i = 0; i < voiture.nombre_stations; i++) {
if(voiture.tab_actions[i].num_action==valeurdelaction)return i;
}
printf("probleme lors de la fonction indice\n");
EXIT_FAILURE;
return 0;
}
void recuperation_de_donnees(t_assemblage *voiture) {
FILE *fichier;
fichier = fopen("..\\operation.txt", "r");
if (fichier == NULL)printf("probleme ouverture fichier operation");
int i = 0;
voiture->tab_actions=NULL;
voiture->tempsparstation=5;
do {
voiture->tab_actions = (actions *) realloc(voiture->tab_actions, sizeof(actions) * (i + 1));
i++;
} while (fscanf(fichier, "%d %f", &voiture->tab_actions[(i - 1)].num_action,&voiture->tab_actions[(i - 1)].temps_action) == 2);
voiture->tab_actions = (actions *) realloc(voiture->tab_actions, sizeof(actions) * (i - 1));
voiture->nombre_actions = i - 1;
fclose(fichier);
for (int j = 0; j < voiture->nombre_actions; j++) {
voiture->tab_actions[j].nombre_de_exclusion=0;
voiture->tab_actions[j].nombre_de_precedence=0;
voiture->tab_actions[j].precedence=NULL;
voiture->tab_actions[j].exclusion=NULL;
voiture->tab_actions[j].disponible=0;
}
fichier = fopen("..\\exclusions.txt", "r");
if (fichier == NULL)printf("probleme ouverture fichier exclusions");
int action_temp;
i = 0;
do {
fscanf(fichier,"%d ",&action_temp);
voiture->tab_actions[indice(action_temp,*voiture)].nombre_de_exclusion+=1;
voiture->tab_actions[indice(action_temp,*voiture)].exclusion=(int*) realloc(voiture->tab_actions[indice(action_temp,*voiture)].exclusion,sizeof (int)*voiture->tab_actions[indice(action_temp,*voiture)].nombre_de_exclusion);
i++;
} while (fscanf(fichier, "%d", &voiture->tab_actions[indice(action_temp,*voiture)].exclusion[((voiture->tab_actions[indice(action_temp,*voiture)].nombre_de_exclusion)-1)]) == 1);
voiture->tab_actions[indice(action_temp,*voiture)].nombre_de_exclusion-=1;
fclose(fichier);
fichier = fopen("..\\precedence.txt", "r");
if (fichier == NULL)printf("probleme d'ouverture fichier precedence");
i = 0;
do {
fscanf(fichier,"%d ",&action_temp);
voiture->tab_actions[indice(action_temp,*voiture)].nombre_de_precedence +=1;
voiture->tab_actions[indice(action_temp,*voiture)].precedence= (int*) realloc(voiture->tab_actions[indice(action_temp,*voiture)].precedence, sizeof(int) * voiture->tab_actions[indice(action_temp,*voiture)].nombre_de_precedence);
i++;
} while (fscanf(fichier, "%d", &voiture->tab_actions[indice(action_temp,*voiture)].precedence[((voiture->tab_actions[indice(action_temp,*voiture)].nombre_de_precedence)-1)])==1);
voiture->tab_actions[indice(action_temp,*voiture)].nombre_de_precedence-=1;
fclose(fichier);
voiture->tab_station=NULL;
voiture->tab_station=(t_station*) malloc(sizeof (t_station)*1);
voiture->tab_station[0].station=NULL;
voiture->tab_station[0].station=(int*) malloc(sizeof (int)*1);
voiture->nombre_stations=1;
}