dalma101
Messages postés51Date d'inscriptionjeudi 13 mai 2004StatutMembreDernière intervention13 août 2008
-
4 nov. 2006 à 20:56
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 2016
-
4 nov. 2006 à 21:56
Bonjour, j'envoie ce post parce que ma copine est vraiment dans la merde pour son projet d'info. Elle doit programmer en c++ une horloge console avec gestion d'un réveil. (cf. post précédent, après lundi j'arrête, je le jure)
Si des âmes bien intentionnées pouvaient m'aider à lui trouver une solution et me donner des solutions fonctionnelles (codes complets et explications si possible ce serait super super cool et je ne les remercieraient jamais assez) car je n'ai jamais programmé en c++ et j'ai vraiment pas le temps d'approfondir (j'aurais cherché plus profondément si je pouvais mais le programme est à rendre pour lundi voire mardi). J'ai cherché mais je pige vraiment rien donc si possible donner code et où le mettre (je donne mon mail ou msn si nécessaire...)
En résumé, horloge avec 4 modes tournant (affichage heure, réglage heures, réglage minutes, réglage réveil (réglage heures réveil, réglage minutes réveil, réveil on/off), affichage heure,...). D'autres classes existent mais je n'en parle pas car elles ne servent pas pour ce qui merde (gestion de l'affichage et du clavier).
3 choses plantent ou doivent être améliorées : - gestion de l'heure (horloge doit tourner en mode normal et réglage du réveil, pas lors du réglage des heures et minutes de l'heure normale). L'utilisation d'un sleep ne donne pas un fonctionnement optimal et je ne sais pas si ça tourne toujours en continu.
- lorsque l'on est dans le réglage du réveil, plus moyen de retourner vers l'affichage normal de l'heure ???
- la surveillance du réveil peut-elle être améliorée (car pas moyen de la tester pour le moment)
Je fournis le code utile pour être plus clair. En rouge et orange les choses qui plantent ou qui peuvent être modifiées.
NB : Les classes et fonctions sont censées rester telles quelles mais si une solution alternative existe ne pas hésiter à la donner (je le répète en code clair et précis)
Je me répète donnez moi des codes clairs et l'emplacement où les mettre.
Mille fois merci d'avance pour tout l'aide apportée. Merci, merci, merci...
// Class automatically generated by Dev-C++ New Class wizard
#include
#include "horloge.h" // class's header file
// class constructor
Horloge::Horloge(short _heures, short _minutes, short _mode, short _nbMode,
short _resolution, Clavier _clavier, Cadran _cadran):
heures(_heures),
minutes(_minutes),
mode(_mode),
nbMode(_nbMode),
resolution(_resolution),
clavier(_clavier),
cadran(_cadran)
{
// insert your code here
}
// class destructor
Horloge::~Horloge()
{
// insert your code here
}
void Horloge::AvancerHeures()
{
...
}
void Horloge::AvancerMinutes()
{
...
}
void Horloge::ReculerHeures()
{
...
}
void Horloge::ReculerMinutes()
{
...
}
void Horloge::Controler()
{
Clavier unClavier;
Cadran unCadran;
unCadran.Afficher(":",5);
if ((resolution == 12 && heures >= 12) || (resolution == 24 && heures >= 24))
{
cout << "resolution : " << resolution << endl;
cout << "mettre une heure inferieure a " << resolution << endl;
}
else if (heures < resolution)
unCadran.Afficher(heures,2);
if (minutes >= 60)
{
cout << "mettre des minutes inferieure a 60"<< endl;
}
else unCadran.Afficher(minutes,7);
short compteur = 0;
do
{
Sleep(250); -----------> gestion de l'heure normale, doit tourner en continu dans certains
++compteur;
----------> cas, pas dans d'autres (utilisation d'un thread ? comment ? où ?)
if (compteur == 240)
{
AvancerMinutes();
unCadran.Afficher(minutes,7);
compteur = 0;
} if (minutes 00 && compteur 0)
{
AvancerHeures();
unCadran.Afficher(heures,2);
}
} while (!unClavier.ScruterClavier());
char touche;
int modulo;
do
{
touche = unClavier.ScruterClavier();
if (touche == 3)
{
modulo = mode % nbMode;
switch(modulo)
{
case 1 :
unCadran.Afficher("HH : ",2);
unCadran.Afficher(heures,7);
break;
case 2 :
unCadran.Afficher("MM : ",2);
unCadran.Afficher(minutes,7);
break;
case 3 : ------------------------------> pas fait mais doit aller vers le réglage du réveil
pour aller vers reveil.controler;
case 0 :
unCadran.Afficher(heures,2);
unCadran.Afficher(minutes,7);
short compteur2 = 0;
do
{
Sleep(250);
nightlord666
Messages postés746Date d'inscriptionvendredi 17 juin 2005StatutMembreDernière intervention23 mai 200710 4 nov. 2006 à 21:08
Ca ne sert à rien de poster deux sujets, à part à polluer le forum et à prendre un peu plus de place dans la base de données...
<hr size="2" width="100%" />Sachant qu'on peut toujours enlever une ligne à un programme, et que dans un programme il y a toujours un bug, un programme peut se résumer à une ligne avec un bug.
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201626 4 nov. 2006 à 21:56
L'heure systeme étant constante, m'est avis qu'il ne sert à rien d'utiliser plusieurs boucles do...,
j'en aurais fait qu'une controlé par le menu, mais par contre j'aurai fait un 2eme buffer écran grace
à la console Win32 c'est très facile (CreateConsoleScreenBuffer),
donc un buffer heure et un autre modif.
Mais il serait trop long pour moi de te donner un code pret à utiliser.