2012-12-20 47 views
1

我正在嘗試創建一個Play()函數(想像一個媒體播放器類型的播放),首先檢查以確保給定的對象不在其選擇的末尾(如果它是,用戶會被告知倒帶。)用Bool函數確定結尾

我有一個稱爲IsCAtEnd()的bool函數。它應該找出C是否在最後。現在我在它是這樣的:

bool AC::IsCAtEnd() 
{ 
CAtEnd = (CurrentSelect == NumOfSelect) 
if (CAtEnd) 
{return true;} 
else 
{return false;} 
} 

在我玩()函數我有這樣的事情 -

void AC::Play() 
{ 
int Choice; 
cout << Enter Selection to Play: 「; 
cin >> Choice; 

CurrentSelection = Choice; 
If (IsCAtEnd()) 
{ 
cout << 「You need to rewind first.」 << endl; 
} 
else 
{ 
cout << 「Playing 「 << CurrentSelection << endl; 
} 

它編譯和運行,但並不像我想它太。首先,如果我輸入最後一個選擇(說C有6個選擇,我想播放最後一個),它會告訴我倒帶。 取而代之的是,我希望它能夠播放該選擇,並且在下一次播放被叫做要求倒帶時(回想上次播放被調用時,它在最後一個選擇中)。我也希望它繼續提示用戶倒帶,直到他們這樣做(所以不要再打電話,選擇不同的選擇並讓選擇發揮作用)。

我知道我需要這樣做,所以如果最後一個選擇被放入,CAtEnd變量在播放後更改爲true。這樣下一次它會說它需要被重新卷繞。我不知道該怎麼做。

+1

你的整個'IsCAtEnd '功能花了我幾分鐘的時間來解析我的想法。 '返回CurrentSelect == NumOfSelect;'是非常容易理解的。 – chris

+0

你的CAtEnd是IsCAtEnd()函數?它應該是bool CAtEnd?克里斯說,這個功能的主體只需要一行。 –

+0

將代碼更改爲該代碼。 是的CAtEnd是一個變量聲明在類'布爾CAtEnd' 清除後的功能,我想我應該使用這個變量繼續倒帶提示我想? – Rowahood

回答

2

我想你想先玩任何選擇。 然後檢查它是否是最後一個。如果是最後一個,則會提示倒帶消息,否則不執行任何操作。

你可以改變它像這樣

if(currentSelection <= NumberOfSelection) 
{ 
    cout << 「Playing 「 << CurrentSelection << endl; 
} 

If (IsCAtEnd()) 
{ 
    cout << 「You need to rewind first.」 << endl; 
} 
+0

謝謝!這絕對有助於我的最後選擇不被播放。但是,我仍然有Play的問題,讓您在下次打電話時播放不同的選擇(而不是因爲上次播放上次選擇而讓您倒帶)。 我按照這種方式清理了我的bool功能克里斯指出,雖然,我仍然有布爾變量(布爾CAtEnd)使用。有沒有一種方法可以在播放任何選擇之前使用它來回滾它們? – Rowahood

+0

當你提示倒帶消息時,你想讓用戶去哪個玩嗎? – goldenberry

0

如果您希望程序連續運行,並與用戶輸入提示倒帶味精時,你可以有一個while循環

int Choice;  
    cout << Enter Selection to Play: 「; 
    cin >> Choice; 

    while(choice != 0) 
    { 

     CurrentSelection = Choice; 

     if(currentSelection <= NumberofSelection) 
      cout << 「Playing 「 << CurrentSelection << endl; 

     if (IsCAtEnd()) 
     { 
      cout << 「You need to rewind first.」 << endl; 
      cout << Enter Selection to Play: 「; 
      cin >> Choice; 
     } 
} 
+0

我現在明白了!我想我完全不需要這個。我希望Play完全不可用,直到用戶倒帶。 所以我在想: '// while CAtEnd is true(C is end) cout <<「請後退」。 否則,繼續使用常規播放功能。 – Rowahood