Chronométrer un temps de réponse [Résolu]

syllabozoo 5 Messages postés samedi 16 février 2013Date d'inscription 22 mai 2018 Dernière intervention - 20 mai 2018 à 15:59 - Dernière réponse : syllabozoo 5 Messages postés samedi 16 février 2013Date d'inscription 22 mai 2018 Dernière intervention
- 22 mai 2018 à 06:18
Bonjour,

je débute en C++. Je souhaite créer un jeu de calcul mental très simple, sur console pour le moment.

Le principe est de poser une opération (tables addition ou multiplication) et de chronométrer le temps de réponse de mes élèves pour chaque opération posée afin de déceler les additions ou multiplications les plus problématiques à mémoriser.

j’envisage de créer une fonction qui fonctionne ainsi :

une opération au hasard apparaît
le chronomètre se met en marche
l'élève tape la réponse et appuie sur entrée.
le chronomètre s'arrête.
on évalue la réponse donnée
on calcule le temps mis entre l'apparition de l'opération et l'appui sur la touche entrée une fois la réponse tapée.
on affiche le temps mis et "juste" ou "faux"


mais comme je vous l'ai dit, je débute et la classe ctime m'est encore nébuleuse.

J'ai bien trouvé une fonction double difftime ( time_t time2, time_t time1 );

This function calculates the difference in seconds between time1 and time2.

et la fonction time_t time(time_t *time);

This returns the current calendar time of the system in number of seconds elapsed since January 1, 1970. If the system has no time, .1 is returned.

J'ai aussi cherché aussi des exemples sur internet pour bien comprendre comment manipuler le temps mais ceux-ci illustrent des cas où on a besoin de chronométrer le temps d'exécution d'un programme en général et j'ai du mal à transférer ces exemples à mon cas.

Quelqu'un pourrait-il m'aider ?

Je vous remercie
Afficher la suite 

Votre réponse

7 réponses

cptpingu 3794 Messages postés dimanche 12 décembre 2004Date d'inscriptionModérateurStatut 10 juin 2018 Dernière intervention - Modifié par cptpingu le 21/05/2018 à 12:19
0
Merci
Bonjour.

Veux-tu faire du C ou du C++ ?
Si tu veux faire du C++, pas besoin de faire du time/ctime, tu as std::chrono qui est plus adapté.

Exemple:
#include <iostream>
#include <chrono>

int main()
{
  std::chrono::time_point<std::chrono::system_clock> start = std::chrono::system_clock::now();
  std::cout << "3x4 ?" << std::endl;
  int result = 0;
  std::cin >> result;
  std::chrono::time_point<std::chrono::system_clock> end = std::chrono::system_clock::now();
  int elapsed_seconds = std::chrono::duration_cast<std::chrono::seconds>(end - start).count();

  std::cout << "Result: " << result << "(" << (result == 12 ? "ok": "wrong") << ")" << ", elapsed time: " << elapsed_seconds << "s" << std::endl;
  return 0;
}



Améliorer votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
Commenter la réponse de cptpingu
syllabozoo 5 Messages postés samedi 16 février 2013Date d'inscription 22 mai 2018 Dernière intervention - 21 mai 2018 à 17:20
0
Merci
Merci cptpingu,

je teste tout de suite ta proposition.

PS : Je compte plutôt travailler en C++.
Commenter la réponse de syllabozoo
syllabozoo 5 Messages postés samedi 16 février 2013Date d'inscription 22 mai 2018 Dernière intervention - Modifié par cptpingu le 21/05/2018 à 17:37
0
Merci
Re ctpingu

alors j'ai copié-collé ta proposition dans une "main" (je travaille avec codes-blocks).

Par contre j'ai une floppée d'erreurs signalées :

d'abord celle-ci signalée dans la fenêtre située sous la fenêtre d'écriture du programme

C:\Users\C........a\projets c++\chrono tables\main.cpp:11:57: error: 'std::chrono' has not been declared
int elapsed_seconds = std::chrono::duration_cast<std::chrono::seconds>(end - start).count();


Puis dans une nouvelle fenêtre nommée "C++ 0x_warning.h :
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.

// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
// <http://www.gnu.org/licenses/>.

/** @file bits/c++0x_warning.h


*  This is an internal header file, included by other library headers.

*  Do not attempt to use it directly. @headername{iosfwd}

*/

#ifndef _CXX0X_WARNING_H
#define _CXX0X_WARNING_H 1

#if __cplusplus < 201103L
#error This file requires compiler and library support for the \
ISO C++ 2011 standard. This support is currently experimental, and must be \
enabled with the -std=c++11 or -std=gnu++11 compiler options.
#endif

#endif



Aurais-tu une explication ?

Je te remercie.

Commenter la réponse de syllabozoo
cptpingu 3794 Messages postés dimanche 12 décembre 2004Date d'inscriptionModérateurStatut 10 juin 2018 Dernière intervention - 21 mai 2018 à 17:36
0
Merci
Ce n'est pas une erreur dans le code, mais plutôt dans la configuration de ton IDE.
Par défaut, Code::Block utilise (encore !) une ancienne version du C++. Il faut activer la dernière version. Je n'utilise pas cet IDE, mais voici ce que j'ai trouvé:

https://stackoverflow.com/questions/18174988/how-can-i-add-c11-support-to-codeblocks-compiler
Commenter la réponse de cptpingu
syllabozoo 5 Messages postés samedi 16 février 2013Date d'inscription 22 mai 2018 Dernière intervention - 21 mai 2018 à 17:51
0
Merci
Re ctpingu

j'ai réussi à régler le problème en allant dans les settings du compiler et en choisissant

"have g++ follow C++11 ISO C++ language standard ...)"

Donc, la console affiche bien 3*4 ?
par contre la console se referme immédiatement après que j'ai rentré ma réponse et tapé sur "entrée" ce qui fait que j'ai à peine le temps de voir le temps chronométré s'afficher...
Commenter la réponse de syllabozoo
cptpingu 3794 Messages postés dimanche 12 décembre 2004Date d'inscriptionModérateurStatut 10 juin 2018 Dernière intervention - Modifié par cptpingu le 21/05/2018 à 18:36
0
Merci
C'est un souci lié à la manière dont Windows gère ses fenêtres consoles. Si tu lances ce programme via un terminal, l'affichage reste. Si tu le lances via l'IDE, celui-ci ferme la console une fois le programme terminé.
Deux solutions:
1) Tu configures ton IDE pour qu'il ne ferme pas la console une fois le programme terminé.
2) Tu forces une pause à la fin de ton programme.
std::cout << "Press any key to end" << std::endl;
std::cin.get();



Améliorer votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
Commenter la réponse de cptpingu
syllabozoo 5 Messages postés samedi 16 février 2013Date d'inscription 22 mai 2018 Dernière intervention - 22 mai 2018 à 06:18
0
Merci
merci de ton aide cptpingu,

ça marche parfaitement.
Commenter la réponse de syllabozoo

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.