Accueil > Forum > > > > PB TRES TRES TRES URGENT SVP !!!!
PB TRES TRES TRES URGENT SVP !!!!
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ée 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
Projet jeux d'échecs : déplacement d'une pièce dans une case [ par Razily ]
Bonjour à tous , je débute en C++ et je travaille sur projet de jeu d'échec [^^sad1] en ce moment ; dans un premier je voulais simplifier les chose en
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
Livres en rapport
|
Derniers Blogs
[WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|