2016-04-23 12 views
-6

Mein Ziel ist es, ein Programm zu schreiben, das Folgendes macht: Wenn der Benutzer den Zeitpunkt in der Zukunft eingibt, sollte er die Zeit bis zu diesem Zeitpunkt in einem Format anzeigen (hh: mm: ss), , wenn ein Benutzer fragt für die Zeit sollte es die aktuelle Zeit in einem Format (hh: mm: ss) zurückgeben. Wie nutze ich Systemzeit, um mein Ziel zu erreichen? Mein aktueller Status bisher:Wie kann ich die Zeit in C++ überprüfen?

#include <iostream> 
#include<conio.h> 

using namespace std; 
class Time{ 
    int hour, minute, second; 
public: 
    void SetTime(int hour1=0, int minute1=0, int second1=0){ 
     hour = hour1; 
     minute=minute1; 
     second=second1; 
     cout<<"set time working"; 
    } 
    void display(){ 
     cout<<"hour | minute | second"<<endl; 
     cout<<hour<<" "<<minute<<" "<<second; 
    } 
}; 

int main(){ 
    Time time; 
    //char om; 
    int hour1, minute1,second1; 
    cout<<"enter the hour,minute,second: "; 
    cin>>hour1; 
    cin>>minute1; 
    cin>>second1; 
    time.SetTime(hour1,minute1,second1); 
    cout<<"\n The current time?"; 
    time.display(); 
    return 0; 
} 
+2

Der Computer immer im Hintergrund zählt. Es heißt der Systemtakt. So können Sie es nur abfragen, wenn der Benutzer die Zeit einstellt, und dann erneut, wenn sie es anfordern. Berechne den Unterschied in Sekunden und füge das zu deinen eigenen Taktroutinen hinzu. Oder benutze den Rest von ''. – paddy

Antwort

0

Sie müssen die C-Zeitfunktion verwenden, um die Uhrzeit der Computeruhr zu erhalten.

Die Grundidee ist folgende:

  • den Benutzer fragen, für „seine“ Zeit
  • In der gleichen Zeit die aktuelle Zeit

Computer speichern Wann ist Zeit aktuelle Zeit aktualisiert zeigend :

  • überprüfen Computer aktuelle Zeit
  • Berechnen Sie die aktuelle Uhrzeit Nutzer mit vorher gespeicherten Zeiten als Delta

Um dies zu tun, darauf zurückzuführen, wie C „Zeit“ -Funktion funktioniert, ich habe die Zeitvariablen in Sekunden im Programm zu speichern, so dass ich um Stunden, Minuten und Sekunden in nur einer einzigen Variablen zu speichern, die Sekunden speichert.

Hier ist die Funktion:

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

using namespace std; 

class Time { 
private: 

    time_t userTime; 
    time_t computerTime; 

public: 

    void SetTime(int hour1 = 0, int minute1 = 0, int second1 = 0) 
    { 
     userTime = hour1 * 60 * 60 + minute1 * 60 + second1; // Convert input time in seconds. 
     time(&computerTime); // Get computer's current time. 

     cout<<"set time working"; 
    } 

    void display() 
    { 
     time_t currentComputerTime; 
     time(&currentComputerTime); // Get computer's updated current time. 

     time_t currentUserTime = userTime + (currentComputerTime - computerTime); // Calculate current user's time in seconds. 

     // Convert time_t variable in hours, minutes and seconds. 
     int hour = currentUserTime/(60 * 60); 
     int minute = (currentUserTime/60) % 60; 
     int second = currentUserTime % 60; 

     cout<<"hour | minute | second"<<endl; 
     cout<<hour<<" "<<minute<<" "<<second; 
    } 
}; 

int main() 
{ 
    Time time; 
    //char om; 
    int hour1, minute1,second1; 

    cout<<"enter the hour,minute,second: "; 
    cin>>hour1; 
    cin>>minute1; 
    cin>>second1; 

    time.SetTime(hour1,minute1,second1); 

    char pcz[200]; 

    cout<<"\n The current time?"; 
    cin >> pcz; 

    time.display(); 

    return 0; 
} 
+0

Kannst du einfach erklären, was im Programm passiert – Mayur

+0

Ich änderte die Antwort. Hoffe es ist jetzt klarer – Carlo

1

Ich schlage vor, Sie leicht zu betrügen. Zu Beginn, kurz bevor oder nachdem der Benutzer die Uhrzeit eingibt, erhalten Sie den Systemuhrwert. Dann warten Sie, bis der Benutzer nach Zeit fragt. Wenn er fragt, erhalte den Systemuhrwert erneut, subtrahiere davon den vorherigen Wert - das gibt dir die verstrichene Zeit. Fügen Sie diesen Betrag zu der Zeit hinzu, die der Benutzer eingegeben hat, und zeigen Sie das Ergebnis an.

Verwandte Themen