2012-09-15 49 views
1

我爲我的第一份作業創建了一個基本的C++代碼,它只需要我創建一個程序,要求在幾小時,幾分鐘和幾秒鐘內完成一個時間,並將這個時間轉換爲相當於秒;非常基本。關於基本C++關於結構的詢問

我認爲我得到的錯誤是因爲我可能會濫用struct函數。

在得到相同的錯誤後:「預期的主要表達式之前?標記」多次試驗的調整後,我決定嘗試沒有結構的代碼;簡單地用float h,m,s,et來定義它們,然後用這個名稱來調用它們:c >> >> h >> m >> s ;.它的工作原理。這就是爲什麼我認爲這個錯誤與我使用struct函數有關。

下面是短代碼:

#include <iostream> 

using namespace std; 

int main() { 

struct time { 
int hour; 
int minute; 
int second; 
int elapsedTime; 
}; 

cout << "Enter a Time in the Format: HH MM SS: "; 

cin >> time.hour >> time.minute >> time.second; 

time.elapsedTime = ((time.hour*360)+(time.minute*60)+time.second); 

cout << "The Amount of Time Elasped is: " << time.elapsedTime << " seconds." << endl; 

return 0; 

} 

上述錯誤是在代碼中的第16行3次,一次是20日線。

第18行中的另一個錯誤是:「預期在符號之前的非限定id」。

任何幫助將不勝感激。我拒絕看教授發佈的答案。

感謝您的時間:)

+0

在C++中,你應該使用類而不是結構。無論如何,這是第18行? – m0skit0

+0

你讓類型定義和變量聲明混淆了。你需要兩個。你需要一個像你的時間結構類型,然後你需要創建一個該類型的變量。 – user1118321

+1

@ m0skit0:爲什麼?你確定可以使用結構體,在C++中它們基本上是所有成員都是public的類。 – Constantinius

回答

3

有了:

struct time { 
int hour; 
int minute; 
int second; 
int elapsedTime; 
}; 

你只是宣佈你的結構的結構。你必須實例化它的一個實例:

time mytime; 
cin >> mytime.hour; 
cin >> mytime.minute; 
cin >> mytime.second; 
+0

非常感謝君士坦丁堡。我試圖實例化,但更大的錯誤是第16行cin >> somethign >>別的東西。他們應該在不同的路線。 它的工作原理和我理解C++很多,多虧了你的規範:) 編輯:我使用struct而不是類的原因是因爲它是一個嚴格的任務要求。我們還沒有學過類。大聲笑 – Eul

+0

是不是變量聲明'struct time mytime'? – m0skit0

+1

@ m0skit0:不,在C++中不再需要。 – Constantinius

0

你並不需要這樣的結構;只需將這三個時間分量分別放入不同的變量中並做一點算術運算即可。但是如果你想使用一個結構真的,請記住結構的定義會創建一個新的類型。你的代碼部分沒問題。一旦你做到了這一點,你需要創建一個類型的變量:

time data; 

,然後你可以訪問域,如data.hourdata.minutedata.second

0

struct time是一種數據類型。你需要的是那種類型的變量:

struct time t; 

cin >> t.hour >> t.minute >> t.second; 
+0

實際上並不起作用。 – Eul

+0

然後你做錯了什麼。代碼是正確的。 – Oswald

0

有一個小時3600秒的方式

+0

哈哈。謝謝。我obv知道,但它是一個錯字:) – Eul