application reservation de place dans une salle de cinema
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:
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);
} |