JosueClement
Messages postés30Date d'inscriptionlundi 4 mars 2002StatutMembreDernière intervention20 décembre 2007
-
25 mars 2002 à 11:09
cs_golum
Messages postés16Date d'inscriptionmardi 5 février 2002StatutMembreDernière intervention23 juillet 2002
-
18 avril 2002 à 20:53
Regardez plutot...
Ce programme est une sorte d'horloge!
Il n'y a aucune erreur de compilation, mais les heures n'augmentent jamais!!
A la ligne 54, j'ai marqué un commentaire : !!ERREUR ICI!! c'est la que se trouve mon erreur.
Quelqu'un pourrait me dire ce que je fais de faux pour que les heures ne bougent pas..
class Temps
{
public:
void AjusterTemps(int , int , int);
int AjusterHeure(int);
int AjusterMinute(int);
int AjusterSeconde(int);
void AfficherTemps();
private:
int heure;
int minute;
int seconde;
};
int Temps::AjusterHeure(int h)
{
return (h >= 0 && h < 24 ? h : 0); //Ajuster l'heure si plus grand que 0
} //et si plus petit que 24
int Temps::AjusterMinute(int m)
{
return (m >= 0 && m < 60 ? m : 0); //Ajuster les minutes si plus grand que 0
} //et si plus petit que 60
int Temps::AjusterSeconde(int s)
{
return (s >= 0 && s < 60 ? s : 0); //Ajuster les sec si plus grand que 0
} //et si plus petit que 60
void Temps::AjusterTemps(int h , int m , int s)
{
heure = Temps::AjusterHeure(h); //Ajustement de l'heure
minute = Temps::AjusterMinute(m); //Ajustement des minutes
seconde = Temps::AjusterSeconde(s); //Ajustement des secondes
}
void Temps::AfficherTemps()
{
int kb = 70;
do
{
if (seconde == 60)
Temps::AjusterTemps(heure,minute+1,0);
if (minute == 60)
Temps::AjusterTemps(heure+1,0,seconde); //!!ERREUR ICI!!
jcecchi
Messages postés117Date d'inscriptionsamedi 12 janvier 2002StatutMembreDernière intervention14 janvier 20033 25 mars 2002 à 20:12
Ha bon. Peut etre que ton vc++6 est meilleur que le mien car chez moi son code marche comme chez lui : les heures ne s'incremente pas.
AjusterTemps recoit toujours heure et pas heure+1.
Pourquoi aucune idee.
Mon conseil : simplifie ton code, il y a trop de fonctions.
monk31
Messages postés5Date d'inscriptionmardi 26 mars 2002StatutMembreDernière intervention13 juin 2003 26 mars 2002 à 11:53
je pense avoir trouvé ton erreur:
dans void Temps::AfficherTemps() :
quand tu fais ton premier test (seconde==60), tout se passe bien, tu incrémentes le nombre de minutes.
Seulement quand tu arrives à 60 secondes et 59 minutes, tu appeles d'abord Temps::AjusterTemps(heure,59+1,0)
(toujours par rapport à ton premier test), soit Temps::AjusterTemps(heure,60,0).
hors dans Temps::AjusterTemps(int h,int m,int s), tu va actualiser "minute" avec AjusterMinute(m),
mais m=60, donc tu va repositionner "minute" à 0.
tu ne passeras donc jamais ton second test (minute==60) car "minute" ne sera jamais égal à 60.
une solution serait de corriger ta fonction void Temps::AjusterMinute(int m),
en retournant le test suivant :
(m >= 0 && m <= 60 ? m : 0)
la différence provient du fait que tu testes si m<=60 et non plus m<60.
Je pense que c'est ça, mais je peux me tromper.
a+.
cs_golum
Messages postés16Date d'inscriptionmardi 5 février 2002StatutMembreDernière intervention23 juillet 2002 18 avril 2002 à 20:53
moi je comprend, je crois le probleme c juste un probleme d'algo pourtant pour l'expliquer c plus dure vu le nombre de procedures on s'y pert
je propose ca ca marchera surement pas mais ca peut aider a trouver la faille
void Temps::AjusterTemps(int h , int m , int s)
{
heure += Temps::AjusterMinute(m); //Ajustement des minutes
minute += Temps::AjusterSeconde(s); //Ajustement des secondes
}
PS j'suis d'accord pour dire que le compilo de DevC++ pue