IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

des appel de fonction(paramétre, référence )


Sujet :

C++

  1. #1
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 163
    Points : 76
    Points
    76
    Par défaut des appel de fonction(paramétre, référence )
    Bonjour
    j'ai un problème j'arrive pas a régler est le suivant et je croie le passage de parametre il me marche pas :
    j'ai une fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void afiche(double cpt_prod_fab,tableau a)
    {for (int i=0;i<cpt_prod_fab;i++)
    {
    	affiche_prod_fab(*a.tab_prod);
    	a.tab_prod++;
    }
    }
    quand je l'appel dans le main() par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    tableau a; 
    afiche_comd(cpt_prod_comd,a);    // cpt_prod_comd c'est la taille du tableau a.tab_prod
    au début elle affiche normalement mais dés la 2éme fois elle affiche n'importe quoi je ne sais pas pour quoi, mais quand je fait la boucle dans le main sans appelé la fonction afiche il marche trés bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for (int i=0;i<cpt_prod_fab;i++)
    {
    	affiche_prod_fab(*a.tab_prod);
    	a.tab_prod++;
    }
    voici mes variables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class tableau
    {
     
    public:
     
    	tab_prod_fab  *tab_prod;          //// tableau pour les produit a fabriqué
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    struct tab_prod_fab
    {
        char Nom_prod[30];
        char dure_fabric[30];		// le nom du produit et durré de fabrication du produit 
        int Etat_stok;   			// nombre de produit en stock 
        int Quantit_fab;		      	//Quantité à fabriqué ce qu'il reste a fabriqué pour le client (quantité demandé état de stock)
    };
    y'a il une solution a ce problème
    merci

  2. #2
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Points : 1 672
    Points
    1 672
    Par défaut
    Peux tu donner a peux plus d'information ou un petit bout de programme complet qui montre ton erreur. Là j'ai un peu de mal a comprendre je sais pas ou sont initialisé tes variables j'ai pas bien compris ou tu instancie la classe tableau et tout.

    Sinon de ce que j'ai compris tu devrais peut etre utiliser un pointeur ou une reference pour passer le parametre tableau a ta fonction. Mais comme j'ai pas super bien compris le problème je repond peut etre a coté.


    Désolé.
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  3. #3
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 163
    Points : 76
    Points
    76
    Par défaut
    voila mon programme:

    main.cpp
    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
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
     
    #include <iostream> 
    using namespace std;
    #include "tableau.h"
    #include "Att_produit.h"
    #include<string>
    #include <cstring>
    #include <stdio.h>
    #include <time.h>
     
    ///////////// fonction qui affiche les produit a fabriqué 
    void afiche(double cpt_prod_fab,tableau a)
    {for (int i=0;i<cpt_prod_fab;i++)
    {
    	affiche_prod_fab(*a.tab_prod);
    	a.tab_prod++;
    }
     
    }
    ///////////// fonction qui affiche les produit commandé
    void afiche_comd(double cpt_prod_comd,tableau a)
    {for (int i=0;i<cpt_prod_comd;i++)
    {
    	affiche_prod_comd(*a.tab_comd);
    	a.tab_comd++;
    }
    }
     
     
    int main() 
    {
     
    tableau a;        ///// a c'est variable de type classe tableau 
    char boul;
     
    const char * NomJourSemaine[]= {"Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"};
     
    const char * NomMois[]= {"janvier", "fevrier", "mars"     , "avril"  , "mai"     , "juin"    ,
                               "juillet", "aout"   , "septembre", "octobre", "novembre", "decembre"};
     
    double cpt_prod_fab;   // compteur de produit que la sociéte peut fabriqué
    double cpt_prod_comd;  // compteur de produit que le client à commandé
    int x;
     
    //if (a.tab_prod!=NULL ) affiche_prod_fab(*a.tab_prod);
    //cout <<"l'adresse du tableau " <<a.tab_prod<< endl;
     
    a.tab_prod = new tab_prod_fab[100];             // allocation de la mémoire
    a.tab_comd = new tab_prod_comd[100];			// allocation de la mémoire
     
     
     
     
    ////////////////////////////////initialisation du produit à fabriqué 
    for (cpt_prod_fab=0;cpt_prod_fab<5;cpt_prod_fab++,a.tab_prod++)
    {init_prod_fab(*a.tab_prod,cpt_prod_fab);
     //affiche_prod_fab(*a.tab_prod);
    }
    ///////////////////////////////initialisation des produit commandé
    ///////////////////////////// j'ai fait en plus 
    for (cpt_prod_comd=0;cpt_prod_comd<5;cpt_prod_comd++,a.tab_comd++)
    {init_prod_comd(*a.tab_comd,cpt_prod_comd);
     //affiche_prod_fab(*a.tab_prod);
    }
    ////////////////////////////////initialisation du produit à fabriqué 
     
    //init_prod_comd(*a.tab_comd,1);
     
     
    int choix;   // choix de menu
     
    do
    {
    cout <<" ****************************  Menu principale  **************************** "<<endl;
    cout <<"1. l'ajout des produit a fabriqué  "<<endl;
    cout <<"2. la suppression de produit à fabriqué  "<<endl;
    cout <<"3. la ajout des commandes avec la date de livraison souhaitée  "<<endl;
    cout <<"4. l'affichage des produit à fabriqué  "<<endl;
    cout <<"5. l'affichage des produit commandé  "<<endl;
    cout <<"6. l'affichage du trie des produit le plus urgent "<<endl;
    cout <<"7. quitter l'apllication "<<endl;
    cout <<"chiosissez une option parmis les options ci-dessus en tapant un numéro qui le convient: "; 
    cin >>choix;
     
    switch (choix)
    {
    case 1:  ////////////////////////////////1. l'ajout des produit a fabriqué
     
    	cout <<"y'a t'il des produits a fabriqué si oui tapez O, et si non tapez N :"; cin>>boul; 
     
    	while (boul=='O'){ 
     
    		saisir_prod(*a.tab_prod,*a.tab_comd,1);
     
    		cout <<"y'a t'il des produits a fabriqué si oui tapez O, si non tapez N :"; cin>>boul; 
    		cpt_prod_fab++;
    		a.tab_prod++;	
    	}
     
    	break;
    case 2: ////////////////////////////////2. la suppression de produit à fabriqué  
     
    	cout <<"y'a t'il des produits que vous voulez le suprimé de la liste si oui tapez O, et si non tapez N :"; 
    	cin>>boul; 
    	//// boul c'est la variable qui recoit la confirmation de l'utilisateur pour la suppression
    	while (boul=='O'){ 
    		bool trouve=false; 
    		int indice_courant=0;
    		string nom_sup="";			// variable qui contient le nom de produit a suprimé
    		cout << "donnée le nom du produit pour la supression de la liste à fabrique :" <<endl; cin>> nom_sup;
     
    		/*string str3;
    S		//str3.assign( "coucou" );
    		str3 = a.tab_prod->Nom_prod;
    		cout << str3 << endl;
    		*/
    		//a.supression(*a.tab_prod);
    		while ((!trouve)&&(indice_courant<cpt_prod_fab))  //l'indice courant signifie notre emplacement en cours sur les ligne de produit
    		{	// j'ai fait une recherche sur le produit a suprimer si on le trouve 
    			// et il ne dépasse pas la dimmension du tableau (cpt_prod_fab)  
    			if (nom_sup.compare(a.tab_prod->Nom_prod)==0)       // la fleche nous permet d'aller vers la variable souhaité (durrée,nom, état du stock ....etc)
    			{
    			 trouve=true;
    			} 
    			else 
    			{	a.tab_prod++;
    				indice_courant++;
    			}
    		}
    		if (trouve==true)    // si on ' a trouvé le produit a suprimmé 
    			{for(int i=indice_courant; i+1<cpt_prod_fab;i++) ////c'est un algorithme qui nous permet d'écraser la ligne à supprimer et de l'intercaler
    				{
    				 if((i+1)<cpt_prod_fab)
    				 {strcpy(a.tab_prod->Nom_prod,(a.tab_prod+(i+1)-indice_courant)->Nom_prod);
    				  strcpy(a.tab_prod->dure_fabric,(a.tab_prod+(i+1)-indice_courant)->dure_fabric);
    					a.tab_prod->Etat_stok=(a.tab_prod+(i+1)-indice_courant)->Etat_stok;
    					a.tab_prod->Quantit_fab=(a.tab_prod+(i+1)-indice_courant)->Quantit_fab;
    					}
    				}	      // i-=3; joue le même rôle que i=i-3; 
    				a.tab_prod-=indice_courant;     // retour du pointeur au premier indice du la liste de produit a fabriqué
    				cpt_prod_fab--;                 // décrémenté la taille du tableau 
    				cout <<" le produit a été bien suprimé "<<endl; 
    				//afiche(cpt_prod_fab,a);
    			}
    		else{   // si on ' a pas trouvé le produit a suprimmé 
    				cout <<"le nom de produit n'existe pas dans la liste courant"<<endl;
    				a.tab_prod-=indice_courant;
     
    			}
    		if (cpt_prod_fab!=0) 
    			cout <<"y'a t'il des produits que vous voulez le suprimé de la liste si oui tapez O, et si non tapez N :"; cin>>boul; 			
    	}
     
    	break;
    case 3: //////////////////////////////// 3. l'ajout des commandes avec la date de livraison souhaitée
     
    	cpt_prod_comd=0;
     
    	//char boul;
    	cout <<"y'a t'il des produits commandé si oui tapez O, et si non tapez N :"; cin>>boul; 
     
    	while (boul=='O'){ 
     
    		//saisir_prod(*a.tab_prod,*a.tab_comd,2);
    		a.insert_comd(*a.tab_comd);
     
    		cout <<"y'a t'il des produits commandé si oui tapez O, si non tapez N :"; cin>>boul; 
    		cpt_prod_comd++;
     
    		a.tab_comd++;	
    	}
     
    	break;
    case 4: ////////////////////////////////4. l'affichage des produit à fabriqué
     
    	x=cpt_prod_fab;
    	a.tab_prod-=x;	
    	afiche(cpt_prod_fab,a);
    	/*for (int i=0;i<cpt_prod_fab;i++)
    	{
    		affiche_prod_fab(*a.tab_prod);
    		a.tab_prod++;
    	}
    	*/
    	break;
    case 5: ////////////////////////////////5. l'affichage des produit commandé
     
    	x=cpt_prod_comd;
    	a.tab_comd-=x;	
    	afiche_comd(cpt_prod_comd,a);
    	/*for (int i=0;i<cpt_prod_comd;i++)
    	{
    		affiche_prod_comd(*a.tab_comd);
    		a.tab_comd++;
    	}
    	*/
     
    	break;
    case 6: ////////////////////////////////6. l'affichage du trie des produit le plus urgent
     
    	x=cpt_prod_comd;
    	a.tab_comd-=x;	
     
    	x=cpt_prod_fab;
    	a.tab_prod-=x;	
    	a.tri_prod(a,cpt_prod_fab,cpt_prod_comd);
     
    	cout << " tri: a.tab_comd->date_liv" <<a.tab_comd->date_liv<<endl;
    	cout << " tri: a.tab_prod->Nom_prod" <<a.tab_prod->Nom_prod<<endl;
     
    	break;
    case 7: ////////////////////////////////7. quitter l'apllication
    /*	cout <<" voulez vous quitter l'application \n si oui tapez O, et si non tapez N :"; cin>>boul;
    	if (boul=='O') 
    	*/
     
    	cout <<" ********* Merci de votre utilisation de notre logiciele *********"<<endl;
     
    	break;
    }
    }
    while (choix!=7);
     
    cin >> choix;
    ///////////////////////////////// affichage des produit 
     
    ///////////////////////////////// suppression de produit à fabriqué
     
    /////////////////////////////// ajout des commandes avec la date de livraison souhaitée. 
     
    ///////////////////////////////// affichage des produit commandé
     
     
    //////////////////////////////// libération de la mémoire occupé 
    //delete [] a.tab_prod;
     
     
    //cout <<"l'adresse du tableau " << a.tab_prod<< endl;
    /*
    for (int i=0;i<2;i++)
    {a.tab_prod--;
    cout <<"avant l'afichage delete de tableau"<<endl;
    affiche_prod_fab(*a.tab_prod);
    cout <<"delete de tableau"<<endl;
    }
    */
     
    //insertion(a.tab_prod);
    /*
     
    int M[30][30];
    for(int n=0; n<2 ; n++)
        for(int i=0; i<2 ; i++)
           M[n][i]=i++;
     
    for(int n=0; n<2 ; n++)
        for(int i=0; i<2 ; i++)
           cout<<M[n][i]<<" ";
     
    ///////////////////////// Allocation dynamique 
     
    cout <<"allocation dynamique ";
    const int DIMESION = 10;
    int** matrice = NULL ;
    //cout << matrice[0][0];
    matrice = new int * [DIMESION];
    for (int i=0; i<DIMESION; i++) {
        matrice [i] = new int [DIMESION];
    }
    for(int n=0; n<2 ; n++)
    for (int i=0; i<DIMESION;i++)
           matrice[n][i]=i++;
     
    cout <<"sdsdsd"<<endl;
     
    for(int n=0; n<2 ; n++)
    for (int i=0; i<DIMESION;i++)
     
    //delete [] matrice;
    for(int n=0; n<2 ; n++)
    for (int i=0; i<DIMESION;i++)
           cout << matrice[n][i] ;
    cout <<"sdsdsd"<<endl;
    */
     
     
        return 0;
    }
    tableau.cpp
    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
     
    #include "tableau.h"
    #include <iostream>
    using namespace std;
    #include <string>
     
     
    void tableau::insertion( tab_prod_fab &p)
    {tab_prod_comd x;
    	saisir_prod(p,x,1);          ////// l'argument 1 pour insérer dans le tableau des produit a fabriqué p
    }
    void tableau::insert_comd(tab_prod_comd &p)
    {   tab_prod_fab x;
    	saisir_prod(x,p,2);			////// l'argument 2 pour insérer dans le tableau des produit commandé p
    }
    void tableau::supression ( tab_prod_fab &e )
    {
    	string s;    // variable de type string pour récupéré la donnée de la durée de la fabrication 
     
    		cout<<"Tapez le nom du produit à suprimé: "; cin>>s;
     
    		cout<<"Tapez la durée de fabrication en heure: "; 
    		cin>>s; 
    		s=s+"h";
    		strcpy(e.dure_fabric,s.c_str());
    		cout<<"Tapez l'état du stock (la quantité qui existe): "; cin>>e.Etat_stok; 
    	    e.Quantit_fab=0; // initialement la quantité de fabrication égale à 0 avant une commande;
     
    }
    ////////////////// l'ordre de production en fonction à la fois de la date de livraison et de la durée de fabrication
    void tableau::tri_prod(tableau a,double cpt_fab,double cpt_comd){
    	tab_prod_fab *fab;
    	tab_prod_comd *comd;
    	float tri[2][200];
    	time_t today;
     
    	fab = new tab_prod_fab[100];
    	comd = new tab_prod_comd[100];
     
    	fab=a.tab_prod;
    	comd=a.tab_comd;
    /////  [[date de livraison - date courante]/3600]-[(quatité commandé-quantité en stock)*la durré de fabrication]>=0
    	today=time(NULL);
    	for (int i=0;i<cpt_comd;i++)
    	{tri[i][0]=i;
    		for (int j=0;j<cpt_fab;j++)
    		{ if (a.tab_comd->Nom_prod==a.tab_prod->Nom_prod)
     
    		tri[i][1]=(difftime(a.tab_comd->date_liv, today)/3600)-((a.tab_comd->Quantit_comd-a.tab_prod->Etat_stok)/**a.tab_prod->dure_fabric*/);
     
    		}
     
    	//affiche_prod_fab(*p);
    		cout <<"a.tab_comd->date_liv" << a.tab_comd->date_liv<<endl;
    		//string x="tebdila";
    		//strcpy(a.tab_prod->Nom_prod,x.c_str());
    		//cout <<"a.tab_prod->dure_fabric mbedla: " << a.tab_prod->Nom_prod<<endl;
    		a.tab_comd++;
    		//for (int j=0)
    	}
     
    	cout <<" tri ************"<<endl;
    }
    Att_produit.cpp
    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
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
     
    #include "tableau.h"
    #include "Att_produit.h"
    #include <iostream>
    #include <sstream> 
    using namespace std;
    #include<string>
    #include <cstring>
    #include <time.h>
     
    /*
    bool validate1(string s)
    {	bool boul;
    	istringstream istr(s); 
    	int i; 
    	if(istr>>i) boul=true;//cout<<"VOUS AVEZ TAPE L'ENTIER "<<i<<endl; 
    	else boul=false;//cout<<"VALEUR INCORRECTE"<<endl;
     
    	return(boul);
    }
    */
    ////////////////////////////////initialisation du produit; 
    void init_prod_fab(tab_prod_fab &e,int cpt)
    {
    	string Nomprod[5]={"machine","cuisinier","cafe","frigo","frig"};
    	string durefabric[5]={"13h","40h","14h","55h","33h"};
    	int EtatStock[5]={23,12,18,25,54};
    	int Quantitfab[5]={0,0,0,0,0};
    	//e.Nom_prod=Nomprod[0];
     
    	strcpy(e.Nom_prod,Nomprod[cpt].c_str());                  // strcpy permet de faire l'affectation de string vers char
    	strcpy(e.dure_fabric,durefabric[cpt].c_str());
    	e.Etat_stok=EtatStock[cpt];
    	e.Quantit_fab=Quantitfab[cpt];
     
    }
    ////////////////////////////////initialisation du produit; 
    void init_prod_comd(tab_prod_comd &e,int cpt){
     
    	string Nomprod[5]={"machine","cuisinier","cafe","frigo","frig"};
    		int Qte[5]={23,12,18,25,54};
    		time_t time[5]={13,44,53,67,88};
    //		struct tm t;
    //	int x;
    		e.date_liv=time[cpt];
    		strcpy(e.Nom_prod,Nomprod[cpt].c_str());
    	    e.Quantit_comd=Qte[cpt];
    /*
    	//t =localtime(&e.date_liv);
    	cout << "donnez le jour en jj"; cin>>x; t.tm_mday=x;
    	cout << "donnez le mois en mm"; cin >>x; t.tm_mon=x;
    	cout << "donnez l'année en aaaa"; cin>>x; t.tm_year=x;
    */	
    	//e.date_liv = 1212121;
     
    }
     
    /////////////// fonction qui fait l'insertion des produit soit a fabriqué soit commandé
     
    void saisir_prod(tab_prod_fab &e,tab_prod_comd &p, int choix) 
    { 
      string s,s1;    // variable de type string pour récupéré la donnée de la durée de la fabrication 
     
    		/////////////// ici l'insertion des produit  a fabriqué 
      if (choix==1)
    	{	
    		cout<<"Tapez le nom du produit : "; cin>>s;
    		getline(cin,s1);
    		s+=s1;
    		strcpy(e.Nom_prod,s.c_str());		
    		//cin>>e.Nom_prod;
    		bool b;
     
    		do 
    		{
    			cout<<"Tapez la durée de fabrication en heure: ";
    			getline(cin,s);
     
    			istringstream istr(s);            // conversion de string vers int
    			int i; 
    			if(istr>>i) b=true;
    			else {b=false; cout<<"ce que vous avez tapez c'est pas un entier \n";}
    		}
    		while(!b); // 
    		//while(!validate1(s));
     
    		s=s+"h";
    		strcpy(e.dure_fabric,s.c_str());
    		do 
    		{
    			cout<<"Tapez l'état du stock (la quantité qui existe): ";
    			getline(cin,s);
     
    			istringstream istr(s); 
    			int i; 
    			if(istr>>i) {b=true; e.Etat_stok =i;}          
    			else {b=false; cout<<"ce que vous avez tapez c'est pas un entier \n";}
    		}
    		while(!b);
    		//while(!validate1(s));
     
    		//cout<<"Tapez l'état du stock (la quantité qui existe): "; cin>>e.Etat_stok; 
    	    e.Quantit_fab=0; // initialement la quantité de fabrication égale à 0 avant une commande;
    	}
    	/////////////// ici l'insertion des produit commandé
      else if(choix==2){
    	struct tm t,t1;
    	int x,cpt;
    	bool boul;
    	char buffer[256];
    //	do 
    //	{
    	cpt=1; 
    	boul=true;
    	while (boul)
    		{
    			if (cpt==1)  {cout << "donnez le jour de la livraison en jj : "; cin>>x; cpt++;}
    			if ((x>=1)&&(x<=31)){boul=false;
    								 t.tm_mday=x;	
    			}
    			else {cout << "le jour que vous avez donnez doit être entre 1 et 31 retapez un autre: "; cin>>x;}
     
    		}
     
    	boul = true; cpt=1;
    	while (boul)
    		{
    			if (cpt==1)  {cout << "aisni que le mois en mm : "; cin>>x; cpt++; }
    			if ((x>=1)&&(x<=12)){boul=false;
    								 t.tm_mon=x-1;
    			}
    			else {cout << "le mois que vous avez donnez doit être entre 1 et 12 retapez un autre: "; cin>>x;}
    		}
     
    	boul = true; cpt=1;
    	while (boul)
    		{
    			if (cpt==1)  {cout << "donnez l'année de livraison en aaaa :"; cin>>x; cpt++;}
    			if ((x>=1900)&&(x<=2200)){boul=false;
    								   	  t.tm_year=x-1900;
    			}
    			else {cout << "l'année que vous avez donnez doit être entre 1900 et 2200 retapez un autre: "; cin>>x;}
    		}
     
    	boul = true; cpt=1;
    	while (boul)
    		{
    			if (cpt==1)  {cout << "donnez le heur : "; cin>>x; cpt++;}
    			if ((x>=0)&&(x<=23)){boul=false;
    									  t.tm_hour=x;
    			}
    			else {cout << "l'heure doit que vous avez donnez doit être entre 0 et 23 retapez un autre: "; cin>>x;}
    		}
     
    	boul = true; cpt=1;
    	while (boul)
    		{
    			if (cpt==1)  {cout << "donnez le minute : "; cin>>x; cpt++;}
    			if ((x>=0)&&(x<=59)){boul=false;
    								 t.tm_min=x;
    			}
    			else {cout << "les minute doit que vous avez donnez doit être entre 0 et 59 retapez un autre: "; cin>>x;}
    		}
     
    	t.tm_sec=0;
    /*	
        strftime(buffer, sizeof(buffer), "%c.", &t);
        printf("%s\n", buffer);
    	cout << "le buffer est: " << buffer<<endl;
    */
    //	} while (!validate(t));
     
    	p.date_liv = mktime(&t);
     
     
    	cout<<"donnez le nom du produit commandé: "; cin>>p.Nom_prod;
     
    		//strcpy(p.dure_fabric,s.c_str());
    		cout<<"donnez la quantité commandé: "; cin>>p.Quantit_comd; 
     
    	}
     
    }
     
     
    //////////////// voir est ce que la durré données par l'utilisateur est valide ou non
    bool validate(struct tm t)
    {
    	struct tm t1;
    	bool boul=true;
    	time_t today;
    	today=time(NULL);
    	t1=t;
    	if (difftime(today, mktime(&t)) <1296000) 
    		{boul = false ;
    		 cout <<"il faut donnée au moins 15 jour ouvrable de marge pour la livraison"<<endl;									
    		}
    	else {boul=true;
    		}
    	return(boul);
     
    }
     
     
    void affiche_prod_fab(tab_prod_fab e)
    {
        cout<< e.Nom_prod <<" "<< e.dure_fabric <<" " << e.Etat_stok <<" "<< e.Quantit_fab<<endl;
    }
    void affiche_prod_comd(tab_prod_comd e)
    {
    	cout<< e.Nom_prod <<" "<< e.date_liv <<" " << e.Quantit_comd <<" "<<endl;
    }
    Att_produit.h
    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
     
    #ifndef Att_produit_H
    #define Att_produit_H
    #include <time.h>
    #include<string>
    #include<cstring>
    #include <iostream> 
    #include <sstream> 
     
    struct tab_prod_fab
    {
        char Nom_prod[30];
        char dure_fabric[30];		// le nom du produit et durré de fabrication du produit 
        int Etat_stok;   			// nombre de produit en stock 
        int Quantit_fab;		      	//Quantité à fabriqué ce qu'il reste a fabriqué pour le client (quantité demandé état de stock)
    };
     
    struct tab_prod_comd 
    { 
    	    char Nom_prod[30];			 // le nom du produit commandé
    		time_t date_liv;   		     // nombre de produit en stock 
    		//struct tm date_liv;
    	    int Quantit_comd;		     //Quantité comandé
    };
     
    //bool validate1(string s);
    void init_prod_fab(tab_prod_fab &e,int cpt);			// initialisation 
    void init_prod_comd(tab_prod_comd &e,int cpt);			// initialisation a commandé
    void saisir_prod(tab_prod_fab &e,tab_prod_comd &p,int choix);       //Permet de saisir un produit soit pour qui peut être fabriqué par l'entreprise soit une commande 
     
    void affiche_prod_fab(tab_prod_fab e);
    void affiche_prod_comd(tab_prod_comd e);
    bool validate(struct tm t);
     
    //Permet d'afficher un employé
    #endif
    tableau.h
    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
     
    #ifndef TABLEAU_H
    #define TABLEAU_H
    #include "Att_produit.h"
    #include <time.h>
     
    class tableau
    {
     
    public:
     
    	tab_prod_fab  *tab_prod;          //// tableau pour les produit a fabriqué
    	tab_prod_comd *tab_comd;		  //// tableau pour les produit commandé
    	int j;
     
    	time_t timestamp;
     
    	struct tm * t;
     
     
    void insertion(tab_prod_fab &P);			 /////// déclaration méthode d'insertion d'un produit a fabriqué  
    void supression(tab_prod_fab &P );		 /////// déclaration méthode d'supréssion d'un produit a fabriqué  
    void insert_comd(tab_prod_comd &P);       /////// déclaration méthode d'insertion d'une commande client
    void tri_prod(tableau a,double cpt_fab,double cpt_comd);
    //tab_prod_fab modification(tab_prod_fab &P);
     
     
    ////////////////////////////////// 
    /*    double x,y;
        double distance(const tableau &P);
        tableau milieu(const tableau &P); 
    */
    };
    #endif
    vous pouvez l'essaie et vous voyez le probléme
    pour l'essaie en choisi le 4 pour affichage
    aprés la même chose 4 mais il affiche n'importe quoi
    Merci de votre attention

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/11/2012, 18h14
  2. Réponses: 10
    Dernier message: 11/03/2012, 18h52
  3. Réponses: 1
    Dernier message: 27/11/2010, 15h24
  4. appel de fonction avec des espaces dans un paramètre
    Par jjnoui dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/11/2008, 13h44
  5. [Function]Appel de fonction avec paramètre
    Par julienOriano dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/06/2006, 07h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo