-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.c
73 lines (59 loc) · 1.91 KB
/
main.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
67
68
69
70
71
72
73
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include "types.h"
#include "display.h"
/*----------------------------------------------------------------
cars : liste de pointeurs de taille road.size_road
blocked : liste de bool de taille road.size_road
*/
Car** avance (Road* road, Car** coming_cars, bool* blocked){
Car** return_value = malloc ((road->size_road) * sizeof(Car*));
// traite la fin de la route
for (int i = 0; i < road->size_road; i++) {
if (blocked[i]) {
return_value[i] = NULL;
} else {
int j = (road->length_road - 1) + i*(road->length_road); //bout de la ieme ligne
return_value[i] = (road->cars)[j];
(road->cars)[j] = NULL;
}
}
// avance le milieu si possible
for (int i = (road->length_road-2); i>0; i--){
for (int j = 0; j < road->size_road;j++){
if (road->cars[i + 1 + j*(road->length_road)] == NULL){
road->cars[i + 1 + j*(road->length_road)] = road->cars[i + j*(road->length_road)];
}
}
}
// remplis le debut si possible
for (int j=0; j < road->size_road; j++) {
if (road->cars[j*(road->length_road)] == NULL){
road->cars[(road->length_road)] = coming_cars[j];
}
}
return return_value;
}
int main(void){
int n = 10;
Car* cars = (Car*) malloc(sizeof(Car)*n);
Road road;
road.speed_limit = 10;
road.length_road = 10;
road.size_road = 1;
road.cars = (Car**) malloc(sizeof(Car*)*road.length_road);
for (int i = 0; i < road.length_road; ++i) {
road.cars[i] = NULL;
}
display_continue(&road, 1);
road.cars[0] = &cars[0];
display_continue(&road, 1);
road.cars[3] = &cars[1];
display_continue(&road, 1);
road.cars[4] = &cars[2];
display_continue(&road, 1);
road.cars[8] = &cars[3];
display_continue(&road, 1);
return 0;
}