2016-04-23 42 views
-6

我的目標是編寫一個程序,將執行以下操作: 當用戶在將來輸入時間點時,它應該以格式(hh:mm:ss)顯示時間,直到該時間點,如果用戶詢問 對於時間,它應該以格式(hh:mm:ss)返回當前時間。我如何使用系統時間來實現我的目標? 我目前狀態爲止:如何使用C++檢查時間?

#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

計算機總是在後臺計數。它被稱爲_system clock_。因此,您可以在用戶設置時間時查詢它,然後在他們請求時再次查詢。以秒爲單位計算差異,並將其添加到您自己的時鐘例程中。或者使用''的其餘部分。 – paddy

回答

0

你必須使用C時間函數來獲得計算機時鐘的時間。

基本思路是以下幾點:

  • 詢問用戶「他的」時間
  • 在同一時間保存計算機的當前時間

當時間顯示更新的當前時間:

  • 檢查計算機當前時間
  • 使用以前存儲倍的增量

要做到這一點,因爲C「時間」功能的工作原理計算用戶的當前時間,我已經在節目存儲在幾秒鐘的時間變量,所以我有隻需一個存儲秒的單個變量即可轉換小時,分鐘和秒鐘。

這裏的功能:

#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

你能解釋一下程序 – Mayur

+0

中發生了什麼嗎?我修改了答案。希望現在更清楚 – Carlo

1

我建議你稍微作弊。在開始時,在用戶輸入時間之前或之後,您將獲得系統時鐘值。然後你等待用戶詢問時間。當他詢問時,再次獲得系統時鐘值,從中減去之前的值 - 這會給你經過的時間量。將此數量添加到用戶輸入的時間,並顯示結果。