Problème dans mon programme

Fermé
SageApprentit Messages postés 177 Date d'inscription dimanche 19 octobre 2008 Statut Membre Dernière intervention 11 octobre 2009 - 1 nov. 2008 à 19:20
 Nobody - 1 nov. 2008 à 20:53
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;

}

6 réponses

SageApprentit Messages postés 177 Date d'inscription dimanche 19 octobre 2008 Statut Membre Dernière intervention 11 octobre 2009 24
1 nov. 2008 à 20:00
Quand j'entre 3600 sa me met 0 heures et 60 minutes et 0 secondes.
0
#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;

}
0
SageApprentit Messages postés 177 Date d'inscription dimanche 19 octobre 2008 Statut Membre Dernière intervention 11 octobre 2009 24
1 nov. 2008 à 20:03
Merci nobody, peut tu m'expliquer ?
0
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SageApprentit Messages postés 177 Date d'inscription dimanche 19 octobre 2008 Statut Membre Dernière intervention 11 octobre 2009 24
1 nov. 2008 à 20:35
Ok merci toi aussi tu apprends la prog ?
0
Ca fait au moins 10 ans que je n'ai plus fait de prog mais faudrait que je m'y remette ;)
0