[Pb]Projet en C : Distributeur de boisson

Projet en C : Distributeur de boisson [Pb] - C - Programmation

Marsh Posté le 04-02-2007 à 22:21:02    

Bonsoir à tous


Message édité par frodon131 le 12-05-2007 à 19:40:55
Reply

Marsh Posté le 04-02-2007 à 22:21:02   

Reply

Marsh Posté le 04-02-2007 à 22:29:52    

Erreur ici : printf("prix=%d\n",&pri);
Il faut écrire printf("prix=%d\n",pri);
 
Pas terrible le mélange prix, pri, c'est une source potentielle d'erreurs.
 
D'autre part, évite d'utiliser scanf, fgets suivi de strtol est bien meilleur.


Message édité par Trap D le 04-02-2007 à 22:33:19
Reply

Marsh Posté le 04-02-2007 à 22:35:14    

Merci, en fait avec le deboggeur, il me dit que l'erreur vient de la ligne
*result=(-1);

Reply

Marsh Posté le 04-02-2007 à 22:41:48    

ca y est merci, j'ai resolu mon probleme:
pas la peine de passer par des pointeurs

Code :
  1. void prix (struct produit *tableau,int cod,int m,int *p)
  2. {
  3.     int result;
  4.     result=-1;
  5.     int i;
  6.     for(i=0;i<m;i++)
  7.     {
  8.         if (tableau[i].code==cod)
  9.         {
  10.             result=(tableau[i].prix);
  11.         }
  12.     }
  13.     *p=result;
  14. }

Reply

Marsh Posté le 04-02-2007 à 22:43:43    

Pourquoi tu ne fais pas une fonction ?
int prix (struct produit *tableau,int cod,int m) qui retourne le prix trouvé ?

Reply

Marsh Posté le 04-02-2007 à 22:59:04    

Trap D a écrit :

Pourquoi tu ne fais pas une fonction ?
int prix (struct produit *tableau,int cod,int m) qui retourne le prix trouvé ?


 
bonne idée
j'en ai fait une qui marche pas mal avec une boucle for

Code :
  1. int prix (struct produit *tableau,int cod,int m)
  2. {
  3.     int result;
  4.     result=-1;
  5.     int i;
  6.     for(i=0;i<m;i++)
  7.     {
  8.         if (tableau[i].code==cod)
  9.         {
  10.             result=(tableau[i].prix);
  11.         }
  12.     }
  13.     return(result);
  14. }


 
Pour optrimiser le systeme je pensais faire une boucle while; on s'arret dés que le code à été trouvé mais elle marche pas
 

Code :
  1. int prix (struct produit *tableau,int cod,int m)
  2. {
  3.     int result;
  4.     result=-1;
  5.     int i=0;
  6.     while ((result==-1) && (i<m))
  7.     {
  8.         if (tableau[i].code==cod)
  9.         {
  10.             result=(tableau[i].prix);
  11.             i=i+1;
  12.         }
  13.     }
  14.     return(result);
  15. }

Reply

Marsh Posté le 04-02-2007 à 23:10:38    

probleme resolu, le i++ c'est pas dans le if qu'il faut le mettre...
faut vraiment que je me concentre

Reply

Marsh Posté le 05-02-2007 à 00:31:10    

frodon131 a écrit :


Pour optimiser le système je pensais faire une boucle while; on s'arrête dés que le code à été trouvé mais elle marche pas


Code :
  1. int prix (struct produit *tableau,int cod,int m)
  2. {
  3. int i;
  4. for(i=0;i<m;i++)
  5. {
  6.     if (tableau[i].code==cod)
  7.    {
  8.           return tableau[i].prix;
  9.     }
  10. }
  11. return -1; // code d'erreur
  12. }

Message cité 1 fois
Message édité par zapan666 le 05-02-2007 à 00:31:59

---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 05-02-2007 à 00:39:50    

zapan666 a écrit :

Code :
  1. int prix (struct produit *tableau,int cod,int m)
  2. {
  3. int i;
  4. for(i=0;i<m;i++)
  5. {
  6.     if (tableau[i].code==cod)
  7.    {
  8.           return tableau[i].prix;
  9.     }
  10. }
  11. return -1; // code d'erreur
  12. }



 
merci :jap:  
c'est vrai que c'ets plus simple et direct
j'en suis arrivé sinon au choix des pieces à rendre mais la je patauge un peu sur comment choisir les pieces...

Reply

Sujets relatifs:

Leave a Replay

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