call a C function from another function !

call a C function from another function ! - C - Programmation

Marsh Posté le 29-07-2011 à 11:21:16    

Bonjour à Tous,
 
J'aimerais savoir si vous pouvez m'aider à faire un appel à une fonction qui permet de retourner une liste de clients aléatoirement.
 
Fonction 1:
 

Code :
  1. void  affect_client_to_days(JOURS *days, donnee *data, usine1 *usine, client *cust, int TotDemCust)
  2. {
  3.     int j=0;
  4.     int t;
  5.     int jr;
  6.     int dem;
  7.     int it=0;
  8.     int nbr_c=1;
  9.     srand(time(NULL));
  10.     int nombre_aleatoire = 0;
  11.     for (jr=1; jr<=data->nbr_periodes; jr++)
  12.         {               
  13.                    days[jr].TotDemCust = 0;
  14.                    days[jr].nbr_clients= 0;
  15.                    while (((usine->dem_jour[jr]+usine->stock[jr-1]) > TotDemCust) && (it < data->nbr_clients))
  16.                    {
  17.                          nombre_aleatoire = rand()%data->nbr_clients+1;
  18.                          j=nombre_aleatoire;
  19.                          if((cust[j].Nbvisites < cust[j].frequence)&& (days[jr].cust[j]==0))
  20.                                   {
  21.                                           days[jr].nbr_clients++;
  22.                                           cust[j].Nbvisites++;
  23.                                           days[jr].cust[j]=1;
  24.                                           days[jr].listcust[days[jr].nbr_clients]=j;
  25.                                           days[jr].TotDemCust+=cust[j].demande;
  26.                                           printf("affecter le client numero %d a la periode %d\n",nombre_aleatoire, jr);
  27.                                   }
  28.                    it++;
  29.                    }
  30.                    it=0;
  31.                         if(usine->dem_jour[jr] > days[jr].TotDemCust)
  32.                                   {
  33.                                           j=1;
  34.                                           while ((j <= data->nbr_clients) || (usine->dem_jour[jr] > days[jr].TotDemCust))
  35.                                           {
  36.                                               if((cust[j].Nbvisites < cust[j].frequence)&& (days[jr].cust[j]==0))
  37.                                               {
  38.                                                   days[jr].nbr_clients++;
  39.                                                   cust[j].Nbvisites++;
  40.                                                   days[jr].cust[j]=1;
  41.                                                   days[jr].listcust[days[jr].nbr_clients]=j;
  42.                                                   days[jr].TotDemCust+=cust[j].demande;
  43.                                               }
  44.                                               j++;
  45.                                           }
  46.                                    }
  47.          }
  48.          usine->stock[jr]=usine->stock[jr-1]+days[jr].TotDemCust-usine->dem_jour[jr];
  49.          it=0;
  50. }


 
J'ai besoin maintenant d'utiliser cette liste de clients dans une autre fonction qui permet de les classer par ordre décroissant en fonction de leur demande (sachant que les quantités de demandes se trouvent dans un fichier texte.
 
Fonction 2 :
 

Code :
  1. void rechercher_max_quantite(donnee *data, client *cust)
  2. {                   
  3.     int j = 1;
  4.     int i;
  5.     double max;
  6.     int quantite, num_client;
  7.     for (i=1; i<=data->nbr_depots; i++)
  8.     {
  9.         max = cust[i].demande;
  10.  for (j = data->nbr_depots; j <= data->nbr_clients + data->nbr_depots; j++)
  11.  {
  12.             if (cust[i].demande < max)
  13.             {
  14.                max = cust[i].demande;
  15.                quantite = i;
  16.                num_client = j - data->nbr_depots;
  17.             }
  18.         }
  19.     }
  20.         if((j - data->nbr_depots - 1) == data->nbr_clients)
  21.              printf("Le client %d a la quantite suivante %d\n", num_client, max);
  22. }


 
Je ne sais pas c'est quoi la syntaxe qui permet de faire appel d'une fonction et l'utiliser dans une autre fonction.
 
Merci pour vos remarques et vos réponses.
Cdls.

Reply

Marsh Posté le 29-07-2011 à 11:21:16   

Reply

Marsh Posté le 29-07-2011 à 11:27:16    

Tu ne sais pas comment on appelle une fonction en C, après avoir tapé tout ce code ? C'est une blague ?
 
Ou alors j'ai pas saisi tout le problème ?

Reply

Marsh Posté le 29-07-2011 à 11:35:09    

shaoyin a écrit :

Tu ne sais pas comment on appelle une fonction en C, après avoir tapé tout ce code ? C'est une blague ?
 
Ou alors j'ai pas saisi tout le problème ?


 
Non ce n'est pas une blague  :??: !! Je sais que l'appel d'un fonction est sous cette forme par exemple :
 

Code :
  1. int fctA(int a, intb){
  2.     //dosomestuff
  3.     return val;
  4. }
  5. void fctB(){
  6.     int nb1=0;
  7.     int nb2=0;
  8.     int RetourDeFonctionA = fctA(nb1,nb2);
  9. }


 
mais j'aimerai l'appliquer sur mon cas qui retourne une liste de clients stockés dans un tableau. Si vous pouvez me donner une première piste je serai ravi.
 
Merci.

Reply

Marsh Posté le 29-07-2011 à 11:42:07    

Non, vraiment, je ne vois pas où est le problème... Manifestement, tu sais faire un appel de fonction, alors je ne vois pas où ça coince ?  
C'est le fait de passer des arguments par variable que tu ne maîtrises pas ? Tu as essayé d'appeler ta fonction déjà ? Il y a un problème de compilation ou d'exécution ?

Reply

Marsh Posté le 31-07-2011 à 14:23:03    

shaoyin a écrit :

Non, vraiment, je ne vois pas où est le problème... Manifestement, tu sais faire un appel de fonction, alors je ne vois pas où ça coince ?  
C'est le fait de passer des arguments par variable que tu ne maîtrises pas ? Tu as essayé d'appeler ta fonction déjà ? Il y a un problème de compilation ou d'exécution ?


 
Merci problème résolu.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed