Affiche un chronomètre qui n'utilise pas le processeur à 100% (compilé avec borland c++ 5.02)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 588 fois - Téléchargée 31 fois

Contenu du snippet

Ce code ne sert pas vraiment à grand chose, si ce n'est à m'aider à comprendre un peu mieux le C++, ainsi qu'il peut servir aussi aux autres débutants comme moi.
Pour les personnes un peu plus expertes, veuillez me dire si ce code est bien ou pas du tout. D'ailleurs, je voulais savoir si le temps calculé était bien le bon, je pense qu'il doit y avoir un petit décalage, mais je n'avais pas de chronometre sous la main pour vérifier....
Voilà, je vous laisse regarder le code maintenant :)

Source / Exemple :


#include <windows.h>
#include <conio.h>
#include <iostream.h>

struct temps
{
unsigned int heures;
unsigned int minutes;
unsigned int secondes;
unsigned int dixiemes;
};

void afficher_heure(temps);
temps augmenter_heure(temps);
void chronometre(temps);
void menu(void);

int main(void)
{
temps t;
t.heures=0;t.minutes=0;t.secondes=0;t.dixiemes=0;

menu();

clrscr();

chronometre(t);

getch();
return 0;
}

void afficher_heure(temps t)
{
gotoxy(5,12);
cout<<t.heures<<" heure(s) "<<t.minutes<<" minute(s) "<<t.secondes<<" seconde(s) et "<<t.dixiemes<<" dixieme(s) de secondes.";
}

temps augmenter_heure(temps t)
{

if (t.dixiemes<9) t.dixiemes+=1; else {{t.dixiemes=0;}
if (t.secondes<59) t.secondes+=1; else {{t.secondes=0;}
if (t.minutes<59) t.minutes+=1; else {{t.minutes=0;t.heures+=1;}}}}
return t;
}

void menu(void)
{
for (int i=0;i<30;i++)
	{
	cout<<"-";
   }
cout<<" MENU ";
for (int i=0;i<30;i++)
	{
	cout<<"-";
   }
cout<<"\nCeci est un simple chronometre";
cout<<"\nCependant, il n'utilise pas votre processeur a 100%...\n";
cout<<"\nRemarque importante :";
cout<<"\nPour arreter le chronometre,\n";
cout<<"Utilisez la combinaison de touches Ctrl+C";
cout<<"\n\n";
for(int i=0;i<(30*2+6);i++) {cout<<"-";}
cout<<"\n";
cout<<"Appuyez sur une touche pour demarrer le chronometre...";
getch();
}

void chronometre(temps t)
{
int n=0;
gotoxy(5,10);
cout<<"Vous avez lance le chronometre depuis : \n";

do
	{
if (n=0) {afficher_heure(t); n++;}

Sleep(100);
afficher_heure(t);
t=augmenter_heure(t);
	} while (t.heures<100);

}

Conclusion :


Bien sûr, tous vos commentaires sont les bienvenus...

A voir également

Ajouter un commentaire Commentaires
Messages postés
29
Date d'inscription
dimanche 8 juillet 2001
Statut
Membre
Dernière intervention
30 octobre 2003

Pour ne pas utiliser le CPU à 100% dans une boucle, il suffit
d'ajouter un Sleep (10); à la fin de la boucle.
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
tu pe directement faire temps t={0,0,0,0}; au lieu d'ecrire ca
t.heures=0;t.minutes=0;t.secondes=0;t.dixiemes=0;
c moin chiant!
Messages postés
252
Date d'inscription
vendredi 13 juin 2003
Statut
Membre
Dernière intervention
25 avril 2011

Salut

Interressant...

Pourquoi ne pas utiliser tout simplement les fonctions de <ctime> ou timeGetTime (<window.h> je crois) ?

De plus je n'ai pas compris le titre de la source. Si j'avais pu te passer la photo de l'historique de l'utilisation de l'UC...

100% dès le début du programme.

C'est en faisant des fautes que l'on apprend alors bon courage.

Chouchou
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
Juste un petit truc:
var+=1; est a remplacer par var++ quand ce qui suit += est 1 car le compilo saura de suite traduire par l'instruction asm courte 'inc'. Il ne faut jamais presumer que le compilo est intelligent.
bosse bien.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.