begin process at 2012 05 28 10:17:33
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

Calcul de temps hh:mm:ss:cc


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Calcul de temps hh:mm:ss:cc

lundi 25 janvier 2010 à 19:02:45 | Calcul de temps hh:mm:ss:cc

gazelle100

Bonjour,

Je dois résoudre un problème et je ne sais pas trop comment m'y prendre puisque je suis débutante en programmation.

En fait je dois trouver le temps que prends un coureur à parcourir une distance x. Puisque nous avons seulement un chrono et pas de photofinish, nous enregistrons l'heure de départ des coureurs et enregistrons l'heure d'arrivé de ceux-ci. Je dois alors faire un programme qui soustrait les deux temps et qui va jusqu'au centième de seconde.


Voici ce que j'ai commencé cependant ce n'est pas fonctionnel et avant de continuer je voulais savoir si je suis sur la bonne piste ou bien s'il y a une méthode plus simple de faire le tout. Merci de votre aide


#include <cstdio>
#include <cstdlib>
#include <iostream>


using namespace std;

int main()
{


int centieme1 = 0, centieme2 = 0, resultat_temp = 0, resultatCentieme = 0, seconde1 = 0, seconde2 = 0, resultatSeconde = 0;
/*, minute1 = 0, minute2 = 0, heure1 = 0, heure2 = 0*/

//Declaration des constantes
const int CENTIEME_DHEURE = 100;
const int SECONDE = 60;




//Entrée les seconde et centiemes de départ et d'arrivée
cout << "Entrez les seconde et centieme de depart separe d'un espace :"<<endl;
cin >> seconde1<<':'<<centieme1;
cout << "Entrez les seconde et centieme d'arrive separe d'un espace : "<<endl;
cin >> seconde2<<':'<<centieme2;

/* On fait le calcul entre le temps d'arrivé et le temps de départ pour
l'instant ces seulement les secondes et centimes mais à la fin il faudra
que ce soit hh:mm:ss:cc :*/
if (centieme2 <= centieme1)
{
resultat_temp = centieme2 + CENTIEME_DHEURE;
seconde2= seconde2 - 1 ;
resultatCentieme = resultat_temp - centieme1;
cout << resultatSeconde <<resultatCentieme << endl;
}
else if (seconde2 <= seconde1)
{
resultat_temp = seconde2 + SECONDE;
seconde2 -= seconde2;
resultatSeconde = resultat_temp - seconde1;
cout << resultatSeconde <<resultatCentieme << endl;
}

else
{
resultatCentieme = centieme2 - centieme1;
resultatSeconde = seconde2 - seconde1;
cout << resultatSeconde <<resultatCentieme << endl;
}

return 0;
}
mercredi 27 janvier 2010 à 13:57:59 | Re : Calcul de temps hh:mm:ss:cc

CptPingu

Administrateur CodeS-SourceS
Réponse acceptée !
Evite les using namespace std !!!
Voir: [ Lien ]

Sinon, ça donnerais, en un peu plus propre et rigoureux:
Code C/C++ :
struct myTime
{
  myTime()
    : ms(0), sec(0), min(0), hour(0)
  {
  }

  int ms;
  int sec;
  int min;
  int hour;
};

void displayTime(const myTime& time)
{
  std::cout << time.hour << ":"
	    << time.min << ":"
	    << time.sec << ":"
	    << time.ms
	    << std::endl;
}

int timeToMs(const myTime& time)
{
  return time.ms
    + (time.sec * 1000)
    + (time.min * 1000 * 60)
    + (time.hour * 1000 * 60 * 60);
}

myTime msToMyTime(int time)
{
  myTime mytime;

  mytime.hour = time / (1000 * 60 * 60);
  time %= (1000 * 60 * 60);
  mytime.min = time / (1000 * 60);
  time %= (1000 * 60);
  mytime.sec = time / 1000;
  time %= 1000;
  mytime.ms = time;

  return mytime;
}

myTime computeDiff(const myTime& timeBegin, const myTime& timeEnd)
{
  int realTimeBegin = timeToMs(timeBegin);
  int realTimeEnd = timeToMs(timeEnd);

  std::cout << realTimeEnd << std::endl;
  std::cout << realTimeBegin << std::endl;

  if (realTimeBegin > realTimeEnd)
    return msToMyTime(realTimeBegin - realTimeEnd);

  return msToMyTime(realTimeEnd - realTimeBegin);
}

int main()
{
  myTime time1;
  myTime time2;
  myTime result;

  std::cout
    << "Entrez les seconde et centieme de depart separe d'un espace: "
    << std::endl;
  std::cin >> time1.sec >> time1.ms;
  std::cout
    << "Entrez les seconde et centieme d'arrive separe d'un espace : "
    << std::endl;
  std::cin >> time2.sec >> time2.ms;

  result = computeDiff(time1, time2);

  displayTime(time1);
  displayTime(time2);
  displayTime(result);

  return 0;
}


Voir Boost:datetime pour quelque chose de très rigoureux.
Amélioration possible: vérifier la validité de ce qui est mis (genre une minute est entre 0 et 60 secodes). Faire une classe pour cela.

_____________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
#include <iostream>
vendredi 29 janvier 2010 à 00:16:05 | Re : Calcul de temps hh:mm:ss:cc

uaip

Salut,

Le code est en français, il n'y a donc à priori pas grand risque de confusion avec la clause namespace.


Cordialement, uaip.
vendredi 29 janvier 2010 à 00:23:09 | Re : Calcul de temps hh:mm:ss:cc

CptPingu

Administrateur CodeS-SourceS
Question de propreté, de rigueur et de bonne habitude à prendre dès le début. Quelque soit la langue du code. Tout est dans le lien.

_____________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
vendredi 29 janvier 2010 à 00:31:33 | Re : Calcul de temps hh:mm:ss:cc

uaip

Je l'ai lu justement. Et je te remercie, j'ai appris quelque chose (je me doutais que ne pas inclure un namespace entier pour 2 ou 3 fonctions était le mieux, mais je ne pensais pas qu'il y avait toutes ces "contraintes"). Cela dit, je ne comprends pas pourquoi en filières informatiques, on nous apprend à utiliser namespace std plutôt que std::cout. Enfin bon, on ne va pas refaire l'éducation nationale


Cordialement, uaip.
vendredi 29 janvier 2010 à 00:34:38 | Re : Calcul de temps hh:mm:ss:cc

CptPingu

Administrateur CodeS-SourceS
Tout dépends des écoles, et des professeurs :)

_____________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
vendredi 29 janvier 2010 à 01:09:13 | Re : Calcul de temps hh:mm:ss:cc

gazelle100

Excellent, merci pour vos réponses. Je commençais a me diriger vers une version similaire, mais certes pas aussi rigoureuse que celle là et en investissant 10 fois plus de temps que vous! Le concept de fonction commence a être plus clair alors je suis sur la bonne voie
vendredi 29 janvier 2010 à 19:17:40 | Re : Calcul de temps hh:mm:ss:cc

uaip

Si c'est la notion de "fonctions" qui te pose problème... garde toujours en tête les fonctions en mathématiques.

1) Soit la variable A = 4.
2) Soit la fonction f(x) = x².
3) Soit B = f(A).
4) Donc B vaut 16.

En C++ :
1) int A = 4;
2) int f(int x) { return x*x; }
2) int B = f(A);
4) //Donc B vaut 16

Cordialement, uaip.


Cette discussion est classée dans : temps, seconde2, resultatcentieme, resultatseconde, centieme2


Répondre à ce message

Sujets en rapport avec ce message

comment faire des calculs et dessiner en meme temps avec GLUT [ par nabil ] SALUT,j'ai le probleme suivant : je veux lire des coordonnées des points qui se trouve dans fichier et de faire un petit calcul et d'afficher des poin Calcul du temps de chargement d'un prog... [ par MorZong ] Salut,Encore moi, je suis partout, là c'est pour me dire comment faire pour calculer le temps (en millisecondes si c'est possible) qu'a prit un progr Comment savoir le temps que prend un instruction? [ par Samoul ] Je voudrait savoir comment calculer a l'aide d'un chronomètre ou de nimporte quel autres manière le temps qye peut prendre un instruction.Ex:Timer sta MFC : marche pas tout le temps. [ par jefk ] Voila, j'ai un pbm zarbi. J'ai fait une application SDI bidon sous visual studio avec le wizzard MFC.Ya deux menus, chacun a un sous menu qui fait apa Problème incompréhensible [ par JosueClement ] Regardez plutot...Ce programme est une sorte d'horloge!Il n'y a aucune erreur de compilation, mais les heures n'augmentent jamais!!A la ligne 54, j'ai bomberman avec turbo c++ [ par xav42 ] Bonjour, je suis étudiant et à mon iut on utilise turbo c++ qui date un peumais bon...Voici mon probleme :j'ai un projet pour la fin de l'annee: fair bomberman avec turbo c++ [ par xav42 ] Bonjour, je suis étudiant et à mon iut on utilise turbo c++ qui date un peumais bon...Voici mon probleme :j'ai un projet pour la fin de l'annee: fair fenetre jaune [ par Xs ] Salut !j'ai beau chercher dans toutes les API que je connaisse ou pas, je ne trouve comment faire pour lorsque,la souris reste un certain temps sur un C++ :J'ai cherché partout, VOUS ETES MON SEULE ESPOIR! Même mes profs n'y connaissent rien... [ par Amidala ] Ca fait des journées que j'y bosse, je cherche à trouver l'équivalent de la fonction "Sleep" ou "Wait" en Visual C++ 6.0. (introuvable dans la catégor division [ par superoi ] bonjour en fait je doit realiser une calculatrice juste avec les operateur (+ - / * %) mais qui gere de grand chiffre (des chiffre de 10 000 digit pa


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,390 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales