2011-03-29 135 views
1

將數組傳遞給此函數時出現各種錯誤。該函數假設用戶輸入一個名稱和一個分數,並將它們存儲在2個獨立的數組中,一個用於名稱,一個用於分數。我相信我必須使用指針,但不知道如何使用它們。我不想要答案,只是朝着正確的方向前進。這裏是代碼:無法將數組傳遞到函數

#include <iostream> 

int InputData(int &, char, int); 

using namespace std; 

int main() 
{ 
    char playerName[100][20]; 
    int score[100]; 
    int numPlayers = 0; 

    InputData(numPlayers, playerName, score); 
    return 0; 
} 

int InputData(int &numPlayers, char playerName[][20], int score[]) 
{ 
    while (numPlayers <= 100) 
    { 
     cout << "Enter Player Name (Q to quit): "; 
     cin.getline(playerName, 100, ‘\n’); 
     if ((playerName[numPlayers] = 'Q') || (playerName[numPlayers] = 'q')) 
     return 0; 
     cout << "Enter score for " << playerName[numPlayers] <<": "; 
     cin >> score[numPlayers]; 
     numPlayers++; 
    } 
} 

好的,我做了一些更改和錯誤少,必須越來越接近,哈哈!

+0

我已經花了最後15分鐘看這個,我不確定你想要做什麼。爲什麼你有一個playerName的多維數組?你是否每個球員只儲存一個得分,或者每個球員是否有多個得分? – Pete 2011-03-29 02:34:27

+0

Fraser - main()的返回類型應該是** int ** – Mahesh 2011-03-29 02:40:06

回答

1

這看起來像一個學校的任務,我讚賞你沒有要求答案。有幾種方法可以做到這一點,但您已經非常接近您使用的方法。當你傳遞數組引用時,你不想包含數組的長度。例如,參數int score[100]應該是int score[]。異常,特別是在您的場景中,是使用多維數組。在這種情況下,您想使用char playerName[][20]。您的函數聲明也需要更改以匹配。不要忘記InputData返回一個int。你的聲明和函數調用是正確的;你只需要調整你的功能簽名。

+0

他還需要通過引用傳遞numPlayers。他也在改變比分陣列,但沒有反應跟蹤這些變化。代碼有很多錯誤。我希望他編輯他的問題或回覆一些更多的細節。 – Pete 2011-03-29 02:37:38

+0

我做了一些改變,但我很難過。 – 2011-03-29 03:04:45

+0

Akridge你能檢查我的編輯嗎? – 2011-03-29 03:16:06

1

保持錯誤一邊 -

InputData(numPlayers, playerName, score, size); 
             // ^^^^ size is no where declared 
             // resulting Undeclared indentifier error 

原型提到服用3個參數,但調用傳遞4個參數的功能。

關於錯誤提示:

  • 一個一維數組衰減到指向第一元件在陣列中,同時通過對函數的指針。
  • 2D數組衰減到指向1D數組的指針(即T [] [size]),同時傳遞給函數。
  • 返回類型main()應該是int

這似乎與你糾正大多數的錯誤給出提示。但你忘了改變原型。你爲什麼不使用std::string陣列球員的名字

int InputData(int &, char, int); 

int InputData(int &, char[][20], int[]); 

- 所以,改變嗎?使用它並刪除其餘的錯誤。祝你好運。

+0

我忘記擦除尺寸,但現在就完成了。 – 2011-03-29 03:17:52

+0

@Dave Fraser - 由於它看起來是一個家庭作業,給出的提示你應該能夠解決它。還有一點提示:InputData(..)的原型不符合它的定義參數。 – Mahesh 2011-03-29 03:19:27

+0

@ Mahesh我知道它們在進入函數時轉換爲指針,我的問題是將數組值指定給指針變量。你怎麼做到這一點? – 2011-03-29 03:24:48