Problème dans mon programme

Bonjour, je voudrais une fois mon programme compilé qu'il m'affiche l'heure, les minutes et les secondes voici mon code source car sa ne marche pas, aidez moi svp.

#include <stdio.h>
#include <stdlib.h>

void decoupeSeconde(long* pointeurHeures, long* pointeurMinutes, long* pointeurSecondes);

int main(int argc, char *argv[])
{
long heures = 0, minutes = 0, secondes = 0;

printf("Entrez des secondes pour que le programme traduisent ce-ci en heures et minutes et en secondes :\n\n\n");
scanf("%ld", &secondes);

decoupeSeconde(&heures, &minutes, &secondes);// On envoie l'adresse de heures et minutes et des secondes

// Cette fois, les valeurs ont été modifiées !
printf("%ld heures et %ld minutes et %ld secondes\n\n\n", heures, minutes, secondes);
system("PAUSE");
return 0;
}

void decoupeSeconde(long* pointeurHeures, long* pointeurMinutes, long* pointeurSecondes)
{
/* Attention à ne pas oublier de mettre une étoile devant le nom
des pointeurs ! Comme ça, vous pouvez modifier la valeur des variables,
et non leur adresse ! Vous ne voudriez pas diviser des adresses
n'est-ce pas ? ;o) */
*pointeurHeures = *pointeurMinutes/ 60;
*pointeurMinutes = *pointeurSecondes % 60;
*pointeurSecondes = *pointeurSecondes % 60;

}
Configuration: Windows Vista
Internet Explorer 7.0

6 réponses

  • Votes
  • Date
  • Date décroissante
  1. Quand j'entre 3600 sa me met 0 heures et 60 minutes et 0 secondes.
    1. #include <stdio.h>
      #include <stdlib.h>

      void decoupeSeconde(long* pointeurHeures, long* pointeurMinutes, long* pointeurSecondes);

      int main(int argc, char *argv[])
      {
      long heures = 0, minutes = 0, secondes = 0;

      printf("Entrez des secondes pour que le programme traduisent ce-ci en heures et minutes et en secondes :\n\n\n");
      scanf("%ld", &secondes);

      decoupeSeconde(&heures, &minutes, &secondes);// On envoie l'adresse de heures et minutes et des secondes

      // Cette fois, les valeurs ont été modifiées !
      printf("%ld heures et %ld minutes et %ld secondes\n\n\n", heures, minutes, secondes);
      system("PAUSE");
      return 0;
      }

      void decoupeSeconde(long* pointeurHeures, long* pointeurMinutes, long* pointeurSecondes)
      {
      /* Attention à ne pas oublier de mettre une étoile devant le nom
      des pointeurs ! Comme ça, vous pouvez modifier la valeur des variables,
      et non leur adresse ! Vous ne voudriez pas diviser des adresses
      n'est-ce pas ? ;o) */
      *pointeurHeures = (*pointeurSecondes - *pointeurSecondes % 3600) / 3600;
      *pointeurMinutes = (*pointeurSecondes - *pointeurHeures * 3600 - *pointeurSecondes % 60) / 60;
      *pointeurSecondes = *pointeurSecondes - *pointeurHeures * 3600 - *pointeurMinutes *60;

      }
      1. Moi, ton progarmme me donne :
        Entrez des secondes pour que le programme traduisent ce-ci en heures et minutes et en secondes :
        3600
        0 heures et 0 minutes et 0 secondes

        Dans ton programme d'origine :
        - *pointeurMinutes est initialisé à 0 -> *pointeurHeures = *pointeursMinutes/60 sera toujours == 0
        - % -> reste de la division et donc *pointeursSecondes % 60 donne le nombre de secondes qui reste après avoir décompter les minutes entières.
        1. Ca fait au moins 10 ans que je n'ai plus fait de prog mais faudrait que je m'y remette ;)