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; }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionc'est un peu plus clair, jsuis désolé c est la premiere fois que je suis amené a programmer objet.
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"
#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 IDPlace; }; 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; } } }
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; }
attribPlaceClient(&tabplace[0], &tabclient[0]);
struct Client compte; void EnregDansFichier () { char nomFichier [30]; /* nom du fichier dans lequel il faut sauvegarder */ int erreur; int i; FILE *prog; printf("Entrez le nom du fichier: "); scanf("%s",&nomFichier); prog=fopen(nomFichier,"at"); if (sortie == NULL) { printf("Un probleme est survenu lors de la tentative d'enregistrement %s\n",nomFichier); } else { fprintf(prog,"%s \n %s \n %s \n %s \n %s \n ", compte.Nom, compte.Prenom, compte.Adresse, compte.Mail, compte.Telephone); } fclose(prog); }mais je ne vois pas vraiment comment utiliser cette fonction . ou est ce qu'on doit mettre l'extension du fichier et le chemin d'acces ou on veut enregistrer le programme.? apres cette question je pense que je ferai le reste par moi mais j'avoue etre un perdu devant toutes ces nouvelles notions. En plus je mélange les différents langages de prof parce que dans ma fac on apprend 2-3 langages par semestre et ce n'est pas évident de suivre partout :s
void EnregDansFichier(const char* filename, const Client* compte) { int erreur; int i; FILE *prog; prog=fopen(filename, "a"); if (prog == NULL) { printf("Un probleme est survenu lors de la tentative d'enregistrement %s\n", filename); } else { fprintf(prog, "%s:%s:%s:%s:%s\n", compte->Nom, compte->Prenom, compte->Adresse, compte->Mail, compte->Telephone); } fclose(prog); }
EnregDansFichier("chemin/fichier.txt", &tabclient[0]);
(const char* filename, const Client* compte)juste une dernière question avant d'aller dormir, pourquoi avez vous utilisé des pointeurs dans les paramètres de la fonction?
void EnregDansFichier(char filename, Client compte){?
#define LIBRE 0 #define OCCUPE 1 #define longueur 5 #define largeur 4: struct Place { int Ligne ; int Colonne; int Statut; float Prix; int IDPlace; }; void afficheTab(struct Place tabplace[], int longueur, int largeur) { int i,j; printf("\n\n"); for (i = 0; i < longueur; i++){ for(j = 0; j < largeur; j++){ if (tabplace[i*largeur + j].Statut==LIBRE) printf("O "); else printf("X "); } } }
void reserver(struct Place tabplace[]){ int c=0; char rep; int siege; int i, j; printf("Combien de places voulez vous reserver ? (2 maximum) \n"); scanf("%d", &siege); while((c < LONGUEUR * LARGEUR) && (rep != 'o')){ switch(siege){ case 1: {if(tabplace[c].Statut == LIBRE){ printf("La place (%d, %d) est disponible, vous interesse t elle ? o/n ", tabplace[c].Ligne,tabplace[c].Colonne); scanf("%c", &rep); if(rep == 'o') { tabplace[c].Statut = OCCUPE;} c++;}break; case 2:{ if ((tabplace[c].Statut == LIBRE) && (tabplace[c+1].Statut == LIBRE)) { printf("La place (%d, %d) et la place (%d, %d) sont disponibles, vous interessent elles ? o/n ", tabplace[c].Ligne,tabplace[c].Colonne,tabplace[c+1].Ligne,tabplace[c+1].Colonne); scanf("%c", &rep); } if(rep == 'o') { tabplace[c].Statut = OCCUPE; tabplace[c+1].Statut = OCCUPE; } c++; }break;
case 1: { //code } break; case 2: { }
case 1: // code break; case 2:
tabplace[c].Statut == LIBRE) && (tabplace[c+1].Statut == LIBRE)
tabplace[c].Statut == LIBRE) && (c + 1) < LONGUEUR * LARGEUR && (tabplace[c+1].Statut == LIBRE)
Mon probleme est que si on arrive en fin de ligne et qu'on veut reserver deux places, le programme enregistrer la derniere place de la ligne N et la premiere place de la ligne N+1
comment faire pour choisir deux places contigues uniquement .? (Olala j'ai du mal a m exprimer :'()