|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : PB TRES TRES TRES URGENT SVP !!!! [ Divers / Débutant(e) ] (dalma101)
Informations & options pour cette discussion
samedi 4 novembre 2006 à 20:56:59 |
PB TRES TRES TRES URGENT SVP !!!!

dalma101
|
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...
======================================================================================
MAIN.CPP
======================================================================================
#include <cstdlib> #include <iostream> #include <windows.h>
using namespace std;
#include "cadran.h" #include "clavier.h" #include "horloge.h" #include "reveil.h"
int main(int argc, char *argv[]) { int result = 3%3; Cadran cadran1(5,10); Clavier unClavier; Horloge uneHorloge(22,59,3,3,24,unClavier,cadran1); uneHorloge.Controler(); system("PAUSE"); return EXIT_SUCCESS; }
HORLOGE.CPP
======================================================================================
// Class automatically generated by Dev-C++ New Class wizard
#include <iostream>
#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);
-----------------------> idem que plus haut
++compteur2; if (compteur2 == 240) { AvancerMinutes(); unCadran.Afficher(minutes,7); compteur2 = 0; } if (minutes == 00 && compteur2 == 0) { AvancerHeures(); unCadran.Afficher(heures,2);
} } while (!unClavier.ScruterClavier()); break; } ++mode; } else if (touche == 1) { switch (modulo) { case 1 : AvancerHeures(); unCadran.Afficher(heures,7); break; case 2 : AvancerMinutes(); unCadran.Afficher(minutes,7); break; } } else if (touche == 2) { switch (modulo) { case 1 : ReculerHeures(); unCadran.Afficher(heures,7); break; case 2 : ReculerMinutes(); unCadran.Afficher(minutes,7); break; } } } while(touche != 4); }
REVEIL.CPP
======================================================================================
// Class automatically generated by Dev-C++ New Class wizard
#include <windows.h>
#include "reveil.h" // class's header file
// class constructor Reveil::Reveil(short _heures, short _minutes, short _mode, short _nbMode, short _resolution, Clavier _clavier, Cadran _cadran, short _heureAlarme, short _minuteAlarme): Horloge(_heures, _minutes, _mode, _nbMode, _resolution, _clavier, _cadran), --------> ??? heureAlarme(_heureAlarme), minuteAlarme(_minuteAlarme) { etatAlarme = false; }
// class destructor Reveil::~Reveil() { // insert your code here }
void Reveil::AvancerHeuresReveil() { ... }
void Reveil::AvancerMinutesReveil() { ... }
void Reveil::ReculerHeuresReveil() { ... }
void Reveil::ReculerMinutesReveil() { ... }
void Reveil::Controler() { Clavier unClavier; Cadran unCadran; unCadran.Afficher(":",5); unCadran.Afficher(heureAlarme,2); unCadran.Afficher(minuteAlarme,7); char touche; int modulo2; do { touche = unClavier.ScruterClavier(); if (touche == 3) { modulo2 = mode % nbMode; switch(modulo2) { case 1 : unCadran.Afficher("HHr: ",2); unCadran.Afficher(heureAlarme,7); break; case 2 : unCadran.Afficher("MMr: ",2); unCadran.Afficher(minuteAlarme,7); break; case 3 : unCadran.Afficher("Rev: ",2); unCadran.Afficher("Of",7); break; case 4 : unCadran.Afficher(heureAlarme,2); unCadran.Afficher(minuteAlarme,7); break; case 0 : if (etatAlarme == true) unCadran.Afficher("R",9); if (etatAlarme == false) unCadran.Afficher(" ",9); unCadran.Afficher(heures,2); unCadran.Afficher(minutes,7); Horloge.Controler(); -------------------> doit aller vers l'affichage de l'heure break; } ++mode; } else if (touche == 1) { switch (modulo2) { case 1 : AvancerHeuresReveil(); unCadran.Afficher(heureAlarme,7); break; case 2 : AvancerMinutesReveil(); unCadran.Afficher(minuteAlarme,7); break; case 3 : if (etatAlarme == false) { etatAlarme = true; unCadran.Afficher("Rev: ",2); unCadran.Afficher("On",7); } else if (etatAlarme = true) { etatAlarme = false; unCadran.Afficher("Rev: ",2); unCadran.Afficher("Of",7); } } } else if (touche == 2) { switch (modulo2) { case 1 : ReculerHeuresReveil(); unCadran.Afficher(heureAlarme,7); break; case 2 : ReculerMinutesReveil(); unCadran.Afficher(minuteAlarme,7); break; case 3 : if (etatAlarme == false) { etatAlarme = true; unCadran.Afficher("Rev: ",2); unCadran.Afficher("On",7); } else if (etatAlarme = true) { etatAlarme = false; unCadran.Afficher("Rev: ",2); unCadran.Afficher("Of",7); } } } } while(touche != 4); }
void Reveil::SurveillerAlarme() ---------------> doit-il fonctionner et où mettre la surveillance ? { Sleep(60000); if (heures == heureAlarme && minutes == minuteAlarme && etatAlarme == true) { do { Beep(1000,2000); // 1000 hertz (C5) for 2000 milliseconds }while (minutes != (minutes + 5)); } }
|
|
|
samedi 4 novembre 2006 à 21:08:13 |
Re : PB TRES TRES TRES URGENT SVP !!!!

nightlord666
|
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...
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.
|
|
|
samedi 4 novembre 2006 à 21:56:53 |
Re : PB TRES TRES TRES URGENT SVP !!!!

yann_lo_san
|
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.
|
|
|
Cette discussion est classé dans : afficher, case, minutes, heures, uncadran
Répondre à ce message
Sujets en rapport avec ce message
timer [ par nazca ]
Le Zero de la programmationNazcaSalut a tousJe veux pouvoir faire des relevés de>données à des intervalles 'dt' et pouvoir préciser l'heure de début e
afficher une grille [ par igloobuster ]
salut à tous, j'ai un tableau a deux dimmensions et j'aimerais afficher se tableau dans une fenetre.J'ai pensé à une Listview, mais le probleme est qu
probleme de modification d'heure du systeme [ par nazca ]
Le Zero de la programmationNazcaSalut a tous on ma filer un programme pour afficher l'heure du systeme en temps reel mais le probleme et ke j'aimerais
figeage de boite de dialogue [ par nazca ]
Le Zero de la programmationNazcasalut a tousje voudrais savoir si kelkun pourrai me dire pourkoi ma dialogue box fige kan je met un programme de sauve
pourkoi sa marche pas [ par nazca ]
Le Zero de la programmationNazcaj'aimerais savoir pourkoi on ne pe pas faire une boucle avecla difference entre 2 heures.voici le code:{ CDialog::OnOK
conversion heure et minute en seconde [ par nazca ]
Le Zero de la programmationNazcacomment fait on pour convertir des heures et minutes en secondes car j'aimerais faire la difference entre 2 heures.mer
Visual C++ CBitmap [ par guillaume21 ]
j'essaie d'afficher une image au format pgm (niveaux de gris) avec une CBitmap.J'ai la matrice des pixels de l'image en memoire mais je n'arrive pas à
Fichier texte dans edit box [ par revelata ]
Bonjour,je cherche à afficher un fichier texte dans une editbox.En fait c'est pour une charte accepter refuser, le problème c'est que je n'arrive pas
Ou est l'erreur [ par nazca ]
Le Zero de la programmationNazcaj'aimerai savoir ou est l'erreur de mon programme,surtout pourkoi j'ai pas le droit de mettre Diff dans ma boucle Nomb
Comment afficher une boite de dialogue que je vient de créer ???? [ par coyito ]
Comment procede t on avec les MFC ?MerciA+Eric
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|