Compte à rebour en c++

Contenu du snippet

Voici un compte à rebour très simple mais avec quelques inconvénients dûs au système d'attente d'une seconde que j'ai trouvé sur cppfrance : c'est le seul truc que j'ai trouvé qui fonctionnait. (wait, sleep, delay ... ne fonctionnaient pas, pourtant les .h y étaient.)
Si vous avez une solution, svp donnez-la moi car le système employé empêche de faire autre chose sans faire bugué le programme.
Je programme avec Borland C++ Version 4.02.

Source / Exemple :


#include <iostream.h> //y'en a un tas mais c'est pas grave
#include <time.h>
#include <conio.h>
#include <stdlib.h>
#include <windows.h>
#include <stdio.h>
#include <ctype.h>
#include <dos.h>
#include <string.h> 

void wait(int microsecondes){                                                                              // Cette partie ne vient pas de moi
	 time_t  tmp=clock();                                                                            // Elle remplace sleep(x) ou delay(x) ou wait(x) qui ne
	 while ((((clock()-tmp)*1000)/CLOCKS_PER_SEC)<microsecondes);    // fonctionnent pas sur mon compilateur
}

main(){

	int h1, h2, m1, m2, s1, s2;

	cout<<"                             -- Compte à rebour --"<<endl<<"Apuyez sur une touche"<<endl;
	getch();
	clrscr();

	debut:
	do {cout<<" Rentrez le chiffre des dizaines d'heure"<<endl<<"      Hh:mm:ss"<<endl;
		cin>>h1;
		clrscr();
		}
	while (h1>=10 || h1<0);

	do {
		cout<<" Rentrez le chiffre des unités d'heure"<<endl<<"      "<<h1<<"H:mm:ss"<<endl;
		cin>>h2;
		clrscr();
		}
	while (h2>=10 || h2<0);

	do {
		cout<<" Rentrez le chiffre des dizaines de minutes"<<endl<<"      "<<h1<<h2<<":Mm:ss"<<endl;
		cin>>m1;
		clrscr();
		}
	while (m1>=6 || m1<0);

	do {
		cout<<" Rentrez le chiffre des unités de minutes"<<endl<<"      "<<h1<<h2<<":"<<m1<<"M:ss"<<endl;
		cin>>m2;
		clrscr();
		}
	while (m2>=10 || m2<0);

	do {
		cout<<" Rentrez le chiffre des dizaines de secondes"<<endl<<"      "<<h1<<h2<<":"<<m1<<m2<<":Ss"<<endl;
		cin>>s1;
		clrscr();
		}
	while (s1>=6 || s1<0);

	do {
		cout<<" Rentrez le chiffre des unités de secondes"<<endl<<"      "<<h1<<h2<<":"<<m1<<m2<<":"<<s1<<"S"<<endl;
		cin>>s2;
		clrscr();
		}
	while (s2>=10 || s2<0);

	cout<<" ----- "<<h1<<h2<<":"<<m1<<m2<<":"<<s1<<s2<<" -----"<<endl;
	cout<<"Apuyez sur une touche pour lancer le compte à rebour."<<endl;
	getch();

	while (h1 != 0 || h2 != 0 || m1 != 0 || m2 != 0 || s1 != 0 || s2 != 0)
		{
		wait(1000);
		if (s2 == 0)
			{
			if (s1 == 0)
				{
				if (m2 == 0)
					{
					if (m1==0)
						{
						if (h2==0) h1--, h2 = 9, m1 = 5, m2 = 9, s1 = 5, s2 = 9, h2 = 9;
						else h2--, m1 = 5, m2 = 9, s1 = 5, s2 = 9;
						m1 = 5;
						}
					else m1--, m2 = 9, s1 = 5, s2 = 9;
					m2 = 9;
					}
				else m2--, s1 = 5, s2 = 9;
				s1 = 5;
				}
			else s1--, s2 = 9;
			s2 = 9;
			}
		else s2--;
		clrscr();
		cout<<" ----- "<<h1<<h2<<":"<<m1<<m2<<":"<<s1<<s2<<" -----"<<endl;
		}
	clrscr();
	cout<<" ----- "<<h1<<h2<<":"<<m1<<m2<<":"<<s1<<s2<<" -----"<<endl;
	wait(1000);
	clrscr();
	cout<<"Le compte à rebour a prit fin. Rentrez 1 pour en refaire un autre."<<endl;
	int entree;
	cin>>entree;
	if (entree ==1 ) goto debut;
	else return 0;
	}

Conclusion :


ha heu... aussi, j'ai du mal avec la reconnaissance des touches sur lesquelles ont appuie. J'ai pas compris comment faire et ça serai plus simple pour le choix de l'heure. Help me... Et aussi je tient à dire que je reconnais l'expression du code souvent maladroite... Pas la peine de me le rappeler donc.

A voir également

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.