Bonjour à tous,
Je dois réaliser une application console permettant d'effectuer la réservation de place dans une salle. Cette salle est représenté par un tableau[X][Y].
Dans cette application l'utilisateur a plusieurs option faire une demande de réservation, affiche les place occupées.
Pour le moment j'ai réussi tous cela. Sauf que maintenant il m'est demandé d'ajouter une structure qui va permettre de savoir sur chacune des places le nom de le personne qui a réservé et son nombre de place réservés(à savoir qu'une personne peux réserver plusieurs place si celle-ci sont cote a cote)
Bref je dois utiliser ceci struct reservation *salle[X][Y];
Mon probleme c'est que je ne comprend pas comment remplir la structure... mon programme fonctionne de la façon suivante, il demande a l'utilisateur le nombre de place souhaitée, ensuite le programme cherche de façon aléatoire une place et lui attribue ou non si disponible.
Le truc c'est que l'utilisateur entre son nom et son nombre de place avant que je sache à quelle position il va être affecté dans la salle. Donc comment les sauvegardé dans la structure avant de connaitre cette fameuse position c'est le probleme auquelle je me heurte et n'arrive pas à résoudre depuis plusieurs jours.
je vous fournie mon code pour plus de compréhension.
Merci pour toute aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 #include <stdio.h>; #include <stdlib.h>; #define X 10 #define Y 5 struct reservation // init structure reservation { char nom[10]; int ID; int N; int reserve; int PosX; int PosY; }; void main(void) { int randX, randY,cpt=0,tempN; int salle_binarisee[X][Y]; int placeTrouve=0; char choixM; struct reservation* salle; salle = (int*)malloc(X * Y * sizeof(salle)); for (int j = 0; j < Y; j++) // remplissage du tableau salle binarisee de 0 (0 = place libre) { for (int i = 0; i < X; i++) { salle_binarisee[i][j] = 0; } } do { printf("---------------------------MENU--------------------------------------\n\n"); // affichage du menu printf("1 - Taper 1 pour faire une demande de reservation\n"); printf("2 - Taper 2 pour afficher l etat de le salle\n"); printf("3 - Taper 3 pour afficher le nombre de places libre et occupees\n"); printf("4 - Taper 4 pour afficher le nombre de reservations effectuees \n"); printf("5 - Taper 5 pour quitter le programme\n\n"); printf("--------------------------------------------------------------------\n"); printf("Que voulez vous faire ? : "); scanf("%s", &choixM); switch (choixM) // permet de détecter le choix de l'utilisateur depuis le menu { case'1': // traitement pour effectuer une réservation cpt = 0; //printf("Saisir le nom de la reservation : "); // on stoque le nom dans une variable tempo avant de le mettre dans la structure si la réservation est possible do { printf("Saisir le nombre de place souhaite : "); scanf("%d", &tempN); } while (tempN > X || tempN <= 0); do { randX = rand()%X; // on génére une place aléatoire dans la salle randY = rand()%Y; placeTrouve = 0; for (int i = 0; i < tempN; i++) { if (salle_binarisee[randX+i][randY] == 0 && (randX+i)<=(X-1)) // on vérifie que la place est libre est également que nous ne sommes pas en dehors du tableau { placeTrouve++; // on compte le nombre de place libre } } cpt++; } while (cpt < 100 && placeTrouve!=tempN); // on va génerer des nombres aléatoires situé dans entre 0 et X et 0 et Y tant que l'on ne trouve pas de place libre ou pas assez if (placeTrouve == tempN) // on vérifie que l'on a bien trouvé le nombre N de place demandé libre { for (int i = 0; i < tempN; i++) { salle_binarisee[randX+i][randY] = 1; // on remplace les places libres par des places occupées } printf("Reservation effectuee\n"); } else { printf("Reservation impossible\n"); strcpy(choixM,5); // reservation impossible on quitte le programme } break; case '2': printf("Affichage de la salle :\n"); printf("___________\n"); for (int i = 0; i < Y; i++) // on parcourt le tableau et affichage ligne à ligne la salle { printf("|"); for (int j = 0; j < X; j++) { if (salle_binarisee[j][i] == 1) { printf("*"); } else { printf(" "); } } printf("|\n"); } printf("___________\n"); break; default: break; } } while (choixM != '5'); printf("Arrêt du programme"); free(salle); }
Partager