Accueil > Forum > > > > gestion d'un cinéma
gestion d'un cinéma
vendredi 4 décembre 2009 à 19:30:06 |
gestion d'un cinéma

rouday55
|
Bonsoir bonsoir ! Je suis novice en langage c, je m'y suis mis depuis début novembre et j'ai quelques lacunes dans la résolution de mon problème. En fait jdois réaliser un projet pour après les vac de Noël qui consiste à gérer les reservations d'une salle de cinéma! Ma foi j'ai donc travaillé avec des structures de données que jvais lister apres mais je bloque sur un probleme : celui de l'affectation d'un numéro "d'identifiant" pour une place (ou pour un client c est dans la meme logique je pense )
donc j'ai défini des structures :
Code C/C++ :
/* Creation de la structure Client */
struct Client {
char Nom[20];
char Prenom[20];
char Adresse[50];
char Mail[50];
char Telephone[15];
int IDClient;
};
struct Place {
int Ligne ;
int Colonne;
int Statut;
float Prix;
int IDPlace;
};
j'ai également crée une fonction qui permet de saisir les coordonnees d'un client et de les afficher enfin bref je cherche a définir un numéro unique pour chaque place. Sachant que j'ai crée une fonction qui me permet d'afficher la salle avec la valeur "0" (=libre) grace a Code C/C++ : void afficheTab(struct Place tabplace[], int longueur, int largeur)
{...}
Je sais qu'on doit prendre en parametre le numéro de ligne et de colonne mais je seche un peu s il vous plait
|
|
vendredi 4 décembre 2009 à 19:57:51 |
Re : gestion d'un cinéma

CptPingu
|
Ton problème est assez mal défini. J'ai beaucoup de mal à comprendre ce que tu veux réaliser. Pourrais-tu reformuler clairement la partie sur laquelle tu bloques ?
Si c'est donner un identifiant unique à chaque fois, il te suffit de donner comme identifiant un nombre aléatoire ou non, dont tu vérifies qu'il n'existe pas avant.
|
|
vendredi 4 décembre 2009 à 20:21:27 |
Re : gestion d'un cinéma

rouday55
|
Merci de réponse CptPingu . en effet je pense qu'en quelque sorte chaque case du tableau représentant la salle est identifiée par un nombre aléatoire ou non par exemple la case(0,0) est identifiée par 1, la case(0,1) par 1 etc sans utiliser pour l'instant de nombres aléatoires. Donc en gros je pense qu'on a une fonction qui prend en parametre le tableau de la salle, un indice de colonne et de ligne et qui renvoie un numéro. J"ai donc pensé a quelque chose du genre
Code C/C++ : long idPlace(char tab[],int ligne, int col){ /*une place a un statut soit 'o'=libre soit occupé='x' */
int i, j;
int val=1;
for (i=0;i<ligne;i++){
for (j=0;j<col;j++){
tab[i*col+j]=val;
val =val + 1;
}
}
return val;
}
Mais en fait ca ne marche pas :( je veux incrémenter la valeur de val a chaque tour de boucle . Je ne sais si c est comme ca qu il faut s yprendre
}
|
|
vendredi 4 décembre 2009 à 20:36:15 |
Re : gestion d'un cinéma

CptPingu
|
Désolé, mais c'est toujours totalement incompréhensible.
Au lieu de montrer ta fonction en expliquant ce qu'elle fait, explique plutôt le résultat que tu attends et celui que tu obtiens actuellement.
Pourquoi ta fonction renvoie un numéro ? Pourquoi modifie-t-elle le tableau ? Pourquoi affecte tu des valeurs de type char ?
|
|
vendredi 4 décembre 2009 à 20:46:44 |
Re : gestion d'un cinéma

rouday55
|
oui c'est vrai que ce n'est pas très clair. En fait chaque place est identifiée par :
- un numéro de ligne de type entier
- un numéro de colonne de type entier aussi
- un statut libre/occupé
- un prix de de type float
- un id de type entier
de même pour le client :
- un nom de type chaine
- un prenom de type chaine
- une adresse de type chaine
- un id de type entier
Et en fait l'id de reservation correspondrait a un numéro de reservation. Par exemple a la fac lors de l'inscription chaque étudiant est affecté par un numéro d'étudiant unique. c est en gros ce qui faudrait faire avec les places de la salle. Si on demande d'afficher toutes les données d'un client, il faudrait que soient écrits :
son nom, prenom, adresse,idclient et idreservation(=numero de reservation). j'espere que c'est un peu plus clair, jsuis désolé c est la premiere fois que je suis amené a programmer objet.
|
|
vendredi 4 décembre 2009 à 20:55:33 |
Re : gestion d'un cinéma

CptPingu
|
Code C/C++ : c'est un peu plus clair, jsuis désolé c est la premiere fois que je suis amené a programmer objet.
Mais alors... Il y a de fortes chances que tu soit en C++, pas en C ! [1]
Commence par remplacer tout tes char[] par des std::string.
L'id dans Place représente-t-il la même information que l'id dans Client ?
Si non, l'id dans Place ne devrait-t-il pas être constant ?
[1] PS: pour les experts en C qui me lirait: oui, on peut faire de l'objet en C aussi, mais ce n'est pas à la portée d'un débutant de gérer ses "vtables" à la main.
|
|
vendredi 4 décembre 2009 à 21:15:14 |
Re : gestion d'un cinéma

rouday55
|
L'id dans Place représente-t-il la même information que l'id dans Client ?
la c'est une colle mais je pense que ca pourrait etre la meme. Je ne connais pas du tyle le type std::string. j'ai vraiment débuté le C il y a quelques semaines j'ai du avoir une demi dizaine de cours seulement et je vais devoir faire une soutenance orale sur ce projet que j'aimerais finir avant les vac. donc jvais voir comment je peux me debrouiller avec ces "id"
merci en tout cas Cptpingu pour tes réponses
|
|
vendredi 4 décembre 2009 à 21:25:32 |
Re : gestion d'un cinéma

CptPingu
|
Est-tu en C ou en C++ ? (le std::string n'existe pas en C). Le langage C++ est objet, ce qui n'est pas le cas du C. J'ai besoin de savoir, car ça va orienter la manière dont je vais t'aider. (Je pense que c'est du C, et que tu as fait un abus de langage.)
J'ai maintenant beaucoup mieux compris le contexte de ton problème.
Tu dois donc réaliser un logiciel, qui attribue des réservations à des clients. Je suppose que celui-ci permet de vérifier le nombre de place restantes, le montant gagné, etc... Tu as donc deux tableaux: un pour les "Place" et un pour les "Client".
Le nombre de "Place" est-il fixe ou dynamique (sa taille maximal peut-elle changer) ? Même question pour les "Client" ?
Maintenant, j'aimerais savoir quel est le problème exact ? Ou est-ce que tu bloques dans ton code ? C'est à dire, quelle fonctionnalité n'arrive-tu pas à réaliser ? Peux-tu me décrire précisément ce qui ne vas pas en m'expliquant le résultat attendu, et celui que tu as actuellement ?
|
|
vendredi 4 décembre 2009 à 21:46:57 |
Re : gestion d'un cinéma

rouday55
|
Merci pour ta patience. C'est tres gentil de t'attarder sur mon cas. j'ai fait du java et je trouvais que le C lui ressemblait etrangement . donc actuellement je fais du C (programmation impérative en C). Je n'ai pas vu les tableaux dynamiques donc le tableau de places est statique défini par :
Code C/C++ :
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#define LONGUEUR 8
#define LARGEUR 7
#define LIBRE 0
#define OCCUPE 1
truct Client {
char Nom[30];
char Prenom[30];
char Adresse[50];
char Mail[50];
char Telephone[15];
int IDClient;
};
/* Creation de la structure Place */
struct Place {
int Ligne ;
int Colonne;
int Statut;
float Prix;
int [b]IDPlace;[/b]
};
void initTab(struct Place tabplace[], int longueur, int largeur)
{
int i, j;
int c =0;
for (i = 0; i < longueur; i++){
for(j = 0; j < largeur; j++){
tabplace[c].Ligne = i;
tabplace[c].Colonne = j;
tabplace[c].Statut = LIBRE;
tabplace[c].Prix = 5;
tabplace[c].IDPlace = c;
c=c+1;
}
}
}
ici j'ai donc initialisé tous les champs d'un tableau de places. Le nombre de places est statique donc (je suis loin d'aborder la notion de tableaux dynamiques lol) Quand au nombre de clients, je pense qu'il est statique aussi.
D'après ce que je crois il faudrait une fonction IDPlace qui construit la clé de reservation qui est un entier ou éventuellement un string.
je ne sais pas vraiment comment procéder je n'ai pas plus d'informations concernant cette clé de réservation. Mais en gros a chaque place correspond une clé d'identifant. je pense que ca fonctionne un peu comme pour les reservations de places de concerts a la fnac, une fois qu'on a validé une reservation, on nous donne un numéro de reservation. le programme ne va pas etre hyper élaboré dans la mesure ou je n'ai que quelques cours sur les boucles for, while et les tris .
|
|
vendredi 4 décembre 2009 à 21:57:29 |
Re : gestion d'un cinéma

CptPingu
|
C'est maintenant très clair pour moi. Ta question était bien: comment attribuer un numéro de place, et un numéro de réservation.
Pour attribuer un numéro de place, ce n'est pas compliqué: tu les numérotes dans l'ordre (ce que tu fais déjà). Donc c'est très bien.
Pour les numéros de réservations, j'ai besoin de savoir si ceux-ci sont dépendants d'une date. Est-ce qu'un client réserve pour une date précise ou est-ce qu'on ne se soucie pas de ce cas particulier ?
Si on ne s'en soucie pas, alors il te suffit de faire une fonction qui permet d'attribuer une place à un client. Il suffit juste de donner le même numéro de place au client.
Attention non testé:
Code C/C++ :
void attribPlaceClient(struct Place* place, struct Client* client)
{
place->Statut = OCCUPE;
/* Deux solutions: */
/* 1) Tu ajoutes dans ta structure client un: int IdPlace;*/
client->IdPlace = place->IdPlace;
/* OU */
/* 2) Tu ajoutes un pointeur sur place dans client: struct Place* place;*/
client->place = place;
}
Tu remarqueras que je suis obligé d'utiliser des pointeurs. En effet, pour passer des éléments par référence et non par copie, il n'y a pas le choix.
A utiliser comme suit, ex:
Code C/C++ :
attribPlaceClient(&tabplace[0], &tabclient[0]);
|
|
Cette discussion est classée dans : code, int, client, char, place
Répondre à ce message
Sujets en rapport avec ce message
Thread et socket besoin de conseil [ par kawito ]
Salut,je desire realiser un client/serveur TCPle probleme est que les fonctions accept et recv sont bloquante.donc cela bloque l'affichage etc...mon p
"désallocation" inopinée [ par vecchio56 ]
J'ai touvé un truc bizarre avec Visual C++ 6: le code suivant plante:#include void f(char* a){ a = new char[100]; // alloue de la
problème de char [ par minet03 ]
Coucoutout le monde, tout d'abord voilà mon code :#include #include #include #include #include #include char *bin_dec(char *binai
longip ... probleme [ par winwarrior ]
Salut :)Voila j'ai un petit probleme avec un code qui est censé me renvoyer le longip, il me retourne -795585024 au lieu de 2130772483 (longip de 127.
problème de char [ par minet03 ]
Bonjour c'est encore le débutant, voilà le code :#include #include #include char inverser_char(char variable[]){ int longueur = strlen(variable); // l
Enregistrer un tableau dans un fichier [ par cyberkate ]
Bonjour !Je développe une application en mode console en C++.Voici le thème : je veux gérer des clients qui réalisent plusieurs abonnements à un magaz
Prob avec les variables [ par Ilsundal ]
Bonjour a tous,voila mon probleme, j'ai declaré une variable, mais quand je lui assigne par exemple : MAISON, il m'affiche que M. comment faire pour
Erreur de tansmission (octet manquant) [ par makmibad ]
Bonjour, je suis en train de développer un client serveur sous C++ et je rencontre des difficultes lors de la mise en oeuvre du serveur, je m'explique
String to Char puis Char to Int puis Int to Char puis Char to Int [ par gooooo ]
Bonjour, Je débute avec Visual C++ et j'avoue que j'ai un peu de mal. Habituellement j'utilise Qt et la il y a du changement. Voici le problème : J
Tableaux - Gestion dynamique de la mémoire [ par Smanyx ]
Salut ! Je voudrais écrire un programme qui accepte des noms saisis au clavier et les amasse dans un tableau. Comme les noms sont entrés dans un bouc
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|