Auriez-vous une manière simple d'additionner et soustraire des horraires, jsuis vraiment en galère lol. Du genre donner la durée qui se déroule entre deux horraires. Merci à ceux qui prendront le temps de me répondre !
difftime() peut être une fonction adaptée ou non à ton cas, on ne sait pas. Elle ne gérerait que la différence entre deux (dates et) heures.
Si ta question se rapporte à un exercice, tu devrais poster l'énoncé pour que l'on comprenne ce que tu veux dire par "additionner et soustraire" des "horaires".
Si ce n'est pas un exercice, tu dois avoir une idée de ce que tu veux additionner et soustraire et à quoi, et tu devrais nous donner des exemples concrets des données de départ à fournir à ton programme et du résultat que ton programme doit donner pour illustrer ce que tu veux faire.
En fait, que tu sois dans le cadre d'un exercice ou pas, tu devrais écrire ces exemples concrets, qui te permettront de constituer des jeux de tests permettant de valider le bon fonctionnement de ton programme.
S'il faut ré-écrire les fonctions de calculs d'horaires, voici la méthode que j'emploierais : tout convertir d'abord en secondes, puis remettre en hh:mm:ss tout à la fin (uniquement pour les affichages, disons).
Il faut donc deux fonctions de conversion (dans un sens et dans l'autre).
difftime() peut être une fonction adaptée ou non à ton cas, on ne sait pas. Elle ne gérerait que la différence entre deux (dates et) heures.
Si ta question se rapporte à un exercice, tu devrais poster l'énoncé pour que l'on comprenne ce que tu veux dire par "additionner et soustraire" des "horaires".
Si ce n'est pas un exercice, tu dois avoir une idée de ce que tu veux additionner et soustraire et à quoi, et tu devrais nous donner des exemples concrets des données de départ à fournir à ton programme et du résultat que ton programme doit donner pour illustrer ce que tu veux faire.
En fait, que tu sois dans le cadre d'un exercice ou pas, tu devrais écrire ces exemples concrets, qui te permettront de constituer des jeux de tests permettant de valider le bon fonctionnement de ton programme.
- Edité par Dlks il y a environ 1 heure
Merci pour ta réponse, en gros : l'utilisateur rentrer une premiere horraire, puis une seconde puis je calcule pour lui la durée entre les deux horraires. Exemple : h1 = 17.44 pm
Même si tu n'utilises que les heures et les minutes, la remarque de robun tient toujours. Et même si ton code ne fonctionne pas, tu pourrais le poster avec les résultats attendus.
Le Tout est souvent plus grand que la somme de ses parties.
en gros : l'utilisateur rentrer une premiere horraire, puis une seconde puis je calcule pour lui la durée entre les deux horraires. Exemple : h1 = 17.44 pm h2 = 6.41 am la durée de la nuit est de : 6.41am - 17.44pm.
OK, c'est un début.
Quelques observations :
préciser am ou pm ne sert à rien si on attend de l'utilisateur qu'il tape les heures en un format 24 heures, donc h1 = 17.44 et h2 = 6.41 devraient suffire
comme ces horaires doivent être saisis on peut les récupérer sous forme d'entiers avec scanf, ou de sous forme d'une chaîne récupérée avec fgets que l'on pourra parser avec sscanf, par exemple
tu n'indiques pas sous quelle forme la résultat (la différence) doit être exprimée (on pourrait supposer, par exemple, que c'est 11.03 pour 11 heures et 3 minutes et que c'est une chaîne qui doit être retournée)
tu n'indiques pas comment on sait que le 6.14 est une heure du lendemain et pas du surlendemain (on pourrait supposer, par exemple, que si h2 est "strictement inférieure" à h1, ton programme doit considérer que h2 se rapporte à une heure le lendemain et que le programme ne peut calculer que des différences au maximum de 23 heures et 59 minutes)
qu'arrive-t-il si h1 et h2 sont les mêmes, par exemple 6.14 et 6.14 (on pourrait supposer, par exemple, que le résultat doit être 0.0) ?
tu n'indiques rien sur "l'addition d'horaires"
Tu dois réfléchir à tous ces cas et déterminer ce que ton programme doit faire dans ces différents cas.
Ensuite, tu pourras coder ces comportements sous la forme de fonctions (une pour la soustraction, une pour l'addition, avec des fonctions auxiliaires exécutant des sous-tâches).
Le message qui suit est une réponse automatique activée par un membre de l'équipe de modération. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention. Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé. Pour plus d'informations, nous vous invitons à lire les règles générales du forum
Merci de colorer votre code à l'aide du bouton Code
Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: cpp;">Votre code ici</pre>.
Merci de modifier votre message d'origine en fonction.
Effacer l'écran, c'est très utile, ça sert à ne pas voir les données qu'on a tapé au hasard, et ne pas se rendre compte que le résultat affiché ne correspond pas à ce qu'il devrait.
Comme ça les programmes fonctionnent plus tôt.
Sérieusement, il faut prévoir AVANT un certain nombre de tests pour valider le code
Le programme bénéficierait aussi d'une fonction
int nb_secondes(int heures, int minutes, int secondes);
Je pense que tu devrais suivre ma suggestion : d'abord convertir tout en minutes (j'avais dit des secondes parce que je partais du format hh:mm:ss, mais tu n'utilises pas les secondes, donc il faut les minutes).
t1 = h1*60 + m1; // coucher Soleil, en minutes
t2 = 24*60 + h2*60 + m2; // aube le lendemain, en minutes
^
ne pas oublier !
Il reste alors juste à calculer t2 - t1 (en minutes) puis, à l'aide de divisions entières et de modulos, à le convertir en hh:mm Exemple : 259 minutes
Je pense que tu devrais suivre ma suggestion : d'abord convertir tout en minutes (j'avais dit des secondes parce que je partais du format hh:mm:ss, mais tu n'utilises pas les secondes, donc il faut les minutes).
t1 = h1*60 + m1; // coucher Soleil, en minutes
t2 = 24*60 + h2*60 + m2; // aube le lendemain, en minutes
^
ne pas oublier !
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Le Tout est souvent plus grand que la somme de ses parties.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Le Tout est souvent plus grand que la somme de ses parties.
voilà ce que j'ai actuellement, il ne manque plus qu'a passer tout ça au format 24h, ce sur quoi je galère toujours