fonction simple return

fonction simple return - C - Programmation

Marsh Posté le 31-10-2008 à 17:15:28    

Bonjour
 
 Je suis novice et je voudrais créer une fonction qui renvoie l'heure sous forme hh H mm quand on lui donne le nombre de minutes
En gros  
heure=132;
affiche_heure(heure)  --> renvoi 2h12
 
j'ai donc fait  
 

Code :
  1. int affiche_heure(int heure)
  2. {
  3.   int i=0;
  4.   while(heure>60)
  5.    {
  6.      i=i+1;
  7.      heure=heure-60;
  8.    }
  9. }


 
en fait je voudrais qu'elle renvoit i (contenant le nombre d'heure) et heure (le nombre de minutes)
 
comment fait-il faire ? je sais que return est utilisé mais ne permet de renvoyé qu'une seule variable ...
 
merci

Reply

Marsh Posté le 31-10-2008 à 17:15:28   

Reply

Marsh Posté le 31-10-2008 à 18:39:38    

Il y a plusieurs solutions. En voilà deux :
 
1) Renvoyer une structure
 
2) Ne rien renvoyer, mais deux arguments supplémentaires qui seront des pointeurs vers une zone où ta fonction peut stocker le résultat. Par exemple :
 

Code :
  1. void affiche_heure(int heure, int *hout, int *mout) {
  2.         ...
  3.         *hout = i;
  4.         *mout = heure;
  5. }
  6. int main() {
  7.         int heures, int minutes;
  8.         affiche_heure(1234, &heures, &minutes);
  9.         ...
  10. }


A part ça, ton algo est assez naïf. Plutôt qu'une boucle, tu peux faire une division : heures = heure/60 et minutes = heure - 60*heures (ou aussi minutes = heure % 60, comme tu préfère). Ah et tes nom sont très mal choisis aussi : affiche_heure n'affiche rien, heure contient des minutes...

Reply

Marsh Posté le 31-10-2008 à 18:42:49    

oui bonne idée pour la division plus rapide qu'une boucle .. par contre les pointeurs on n'a pas vu donc on ne peut malheureusement l'utiliser
 
et pour la structure ?
tu veux dire renvoyer une chaine de caractère contenant hh H mm ?


Message édité par GoldenBall le 31-10-2008 à 18:43:02
Reply

Marsh Posté le 31-10-2008 à 20:26:35    

Non, par renvoyer une structure je veux dire renvoyer une structure ;)

Code :
  1. typedef struct {
  2.     int heures;
  3.     int minutes;
  4. } hm_t;
  5. hm_t
  6. affiche_heure(int heure)
  7. {
  8.     hm_t resultat;
  9.     resultat.heures = ...;
  10.     resultat.minutes = ...;
  11.     return resultat;
  12. }
  13. int
  14. main()
  15. {
  16.     hm_t hm;
  17.     ...
  18.     hm = affiche_heure(...);
  19.     printf("%d:%d\n", hm.heures, hm.minutes);
  20.     ...
  21. }


(je vais me faire engueuler parce que j'ai utilisé _t dans mon type)


Message édité par matafan le 31-10-2008 à 20:28:27
Reply

Sujets relatifs:

Leave a Replay

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