un4given
Messages postés42Date d'inscriptiondimanche 14 novembre 2004StatutMembreDernière intervention19 juillet 2006
-
20 nov. 2004 à 15:08
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 2010
-
20 nov. 2004 à 20:00
Bonjour a tous !
Je debute en c++ et j'ai un petit soucis que voici :
En fait je voudrais realiser un programme qui calcule le poul cardiaque (c'est un simple exercice, je vous rassure). Pour ce faire, des que l'utilisateur appuie sur une touche, un compte a rebours de 20 secondes se met en marche et l'utilisateur appuie sur une touche a chaque fois qu'il sent son poul pendant ces 20 secondes. A chaque fois qu'on appuie sur une touche, un petit compteur visible a l'ecran s'incrémente de 1, montrant ainsi a l'utilisateur a combien de poul il en est.
A la fin des 20s, on multiplie ce nombre par 3 et on obtient le poul final. (fantastique non ?)
Voila ! En ce qui concerne le compteur, je pense avoir reussi a le faire (pas sur), mais mon probleme est que je ne sais pas comment faire pour créer un compteur qui calcule le nombre de ofis qu'on a appuyer sur une touche ! Si vous pouviez m'eclairer !!!
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 20 nov. 2004 à 16:45
euh.. test sur de ton truc la?
getchar va attendre que tu aies tapé une touche puis enter
si tu mes 2 secondes a appuyer sur ta touche, time++ ne va pas faire grand chose...
dans ton cas ya pas besoin d'un granded précision, time() (dans (time.h) devrait suffire;
long tpsdebut=time();
int count=0;
while( time()-tpsdebut <=2000) (en milliisecondes)
{
getchar(); (ya mieux hein)
count++;
}
count*=3;
count/=60;
un4given
Messages postés42Date d'inscriptiondimanche 14 novembre 2004StatutMembreDernière intervention19 juillet 2006 20 nov. 2004 à 17:23
Merci a vous deux deja!
En ce qui concerne le decompte du temps je pense faire comme Arnaud a dit. Par contre je ne maitrise pas du tout getchar()...
Dans ta version Arnaud, que veut dire la ligne :
count/=60 ?
Sinon ca me parait proche de ce que je voulais faire donc encore merci !
Par contre tu dis qu'il y a meux que getchar() ? Si oui tu peux m'expliquer quoi ? (et surtout pourquoi c'est mieux !)
un4given
Messages postés42Date d'inscriptiondimanche 14 novembre 2004StatutMembreDernière intervention19 juillet 2006 20 nov. 2004 à 17:27
Je rajoute un probleme dont je ne suis pas sur :
Je veux que quand l'utilisateur lance le programme, il ne se passe rien, il puisse juste lire les consignes d'utilisations que je rentrerai. Et le décompte des 20s démarre uniquement a la premiere touche enfoncé par l'utilisateur. Ce n'est pas ce qui se passe ici si ? Si non comment faire ? (c'est la l'un de mes principal soucis)
un4given
Messages postés42Date d'inscriptiondimanche 14 novembre 2004StatutMembreDernière intervention19 juillet 2006 20 nov. 2004 à 17:40
Bon j'ai retravaillé ton prog Arnaud (enfin j'ai arrondi les bords comme je les voulais) et je pense avoir resolu mon probleme cité au dessus a savoir que je veux que le décompte démarre quand l'utilisateur commence a compter son poul. Ca donne la chose qui suit, dites moi si vous voyez des erreurs, si mon pb est resolu, et surtout si on pouvait m'expliquer la ligne que je ne comprend pas (count\=60) :
void cardio (void)
{
char rep[20];
rep[0] = 'Y';
while ((rep[0] != 'n') && (rep[0] != 'N'))
{
printf("\n Consignes");
getchar();
long tpsdebut=time();
int count = 1;
while( time()-tpsdebut <=2000)
{
getchar();
count++;
}
count*=3;
count/=60; <-- ligne que je ne comprend pas
printf(" Votre poul est de %d", count);
printf("\n\n Voulez-vous recommencer l'execution ? ");
scanf("%s",rep);
}
return ;
}
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 20 nov. 2004 à 17:50
count += 1;
c'est count=count+1 OK?
ben count /= 60 c'est count=count / 60;
ca te donne le nombre de pulsations a la sec, vi je sais a la reflexion c'est inutile...
printf("\n\n Voulez-vous recommencer l'execution ? ");
ne doit pas se trouver dans cette fonction mais dans main, l ca te servira a rien. Idem pour
char rep[20];
rep[0] = 'Y';
while ((rep[0] != 'n') && (rep[0] != 'N'))
{..}
tu pux mettre ca dans main, ca sera plus clair, avec cardio() dans le while.
pour getchar je vais me renseigner.
un4given
Messages postés42Date d'inscriptiondimanche 14 novembre 2004StatutMembreDernière intervention19 juillet 2006 20 nov. 2004 à 18:20
Ouais pour le whil rep etc... je l'avais mis par pur reflexe en fait... ;)
Sinon je vais essayer le fgetc (stdin) mais la je peux pas aujourd'hui car le pc sur lequel je suis n'a pas Borland. En gros ca change quoi ? et puis c'est quoi le stdin que je met a l'interieur ?
Sinon le reste semblait justE?