2017-12-08 31 views
-2

Ich muss eine Stoppuhr-Klasse in C++ schreiben. Die Art, wie ich dies versuche, besteht darin, eine Variable zu definieren, um Runden zu sparen ("Zeit" genannt) und eine bool, mit der ich sehe, ob die Uhr gestartet oder gestoppt wird. Bei Eingabe einer char sollte der Timer starten und time1 setzen. Wenn ein anderes Zeichen eingegeben wird, wechselt die bool zu false und setzt time2 und druckt dann time2-time1. Dies sollte wiederholbar sein, bis 'n' eingegeben wirdStoppuhr-Klasse in C++

Ich bin auch nicht ganz sicher, ich verstehe, welche Zeiteinheit time_t ist. In meinem Code bekomme ich einen Rückgabewert von ± 40 Einheiten jedes Mal, wenn ich versuche, das Intervall zu messen von einer Runde, die ich vermute, ist die Laufzeit des Programms und nicht eigentlich die Zeit des Intervalls.

#ifndef stoppuhr_hpp 
#define stoppuhr_hpp 

#include <iostream> 
#include <time.h> 

class Stoppuhr{ 
private: 
    bool running; 
    clock_t time; 

public: 
    void pushButtonStartStop() { 
     char t=0; 
     running=false; 
     time=0; 
     std::cout << "to start/stop watch please press a key, to end 
clock type 'n' " << std::endl; 
     clock_t time1=0; 
     clock_t time2=0; 
     std::cout << time; 

     while (t!='n') { 
      std::cin >> t; 
      running= !running; 
      if (running) { 
       time1=clock(); 
      } 
      else { 
       time2=clock(); 
       time+=time2-time1; 
       std::cout << time << std::endl; 
      } 
     } 

    } 

}; 

#endif /* stoppuhr_hpp */ 
+0

In C++ sollten Sie '#include ' nicht time.h. Die Einheiten von "time_t" sind in Sekunden für POSIX-kompatible Systeme. Die einzige Garantie des C++ - Standards ist, dass er in einem arithmetischen Typ definiert ist. –

+0

Ich bin nicht mit diesen Funktionen vertraut, aber wenn ich Google über "time.h clock()" frage [der erste Vorschlag] (http://www.cplusplus.com/reference/ctime/clock/) gibt die Antwort . – Beta

+0

Es ist eindeutig ein Hausaufgaben-Problem. –

Antwort

0

Ich bin auch nicht ganz sicher, ob ich verstehen, welche Zeiteinheit time_t in ist.

Die Zeiteinheit, dargestellt durch time_t Implementierung angegeben ist. Normalerweise steht es für Sekunden, wie von POSIX angegeben.

Sie verwenden jedoch time_t nicht überall in Ihrem Programm.

ich raten bin, ist die Laufzeit des Programms

Ich empfehle nicht zu erraten, aber Dokumentation statt zu lesen. clock() gibt die Prozessorzeit zurück, die das Programm seit einem bestimmten Zeitpunkt verwendet hat. Wenn Sie also zwei von clock() zurückgegebene Zeitpunkte abziehen, erhalten Sie die Prozessorzeit zwischen diesen Zeitpunkten. Die Einheit clock_t ist 1/CLOCKS_PER_SEC Sekunden.

i erhalten einen Rückgabewert von ± 40 Einheiten jedes Mal

Granularität von clock Implementierung angegeben ist. Es könnte 40 Einheiten auf Ihrem System sein. Das Programm verbraucht kaum Prozessorzeit, während es auf Eingaben wartet.


Ich habe eine Stoppuhr Klasse

Stopp typischerweise messen realen Welt Zeit heißt Wanduhr Zeit zu schreiben. Die Messung der Prozessorzeit wäre für diese Aufgabe sinnlos.

Ich empfehle stattdessen std::chrono::steady_clock::now.

Wenn Sie darauf bestehen, time.h zu verwenden, dann können Sie time(nullptr) verwenden, um die Wanduhrzeit zu bekommen, aber ich empfehle es nicht.