2012-09-04 59 views
0

我是C++的新手,不確定發生了什麼問題。這是我在uni編程課程中給出的一個任務,這個任務旨在讓用戶輸入等級矢量並確定等級是否合格。當我編譯我最終得到一個錯誤,說明q1.cpp:30:21:錯誤:無法將'y'從'int'轉換爲'std :: vector' 不太清楚爲什麼。對不起格式不好。將int y轉換爲向量<int>有什麼想法?

我已經添加了代碼,但不知道如何包裝它。

#include <vector> 
#include <cstdlib> 
#include <iostream> 

using namespace std; 

int calcNumberOfPasses(vector<int> grades){ 
int x; 
    for (int i=0; i<grades.size(); i++){ 
     cin >>grades[i]; 
    } 
    cin >> x; 
} 



int main() { 
    int y; 
    vector<int> nGrade; 
    nGrade.push_back(y); 
    cout << "Enter how many grades you want to enter"; 
    for (int i=0; i<nGrade.size();i++){ 
     cin >> nGrade[i]; 
    } 
    cin >> y; 
    if (y>=50){ 
     cout << "this is a passing grade"; 
    } 
    calcNumberOfPasses(y); 
} 
+0

calcNumberOfPasses(y); 你不應該通過nGrade而不是y嗎? – BSen

+0

「抱歉關於格式不正確。」不要道歉。修理它。 –

+3

你正在傳遞一個'int'給一個帶有'vector '的函數。你能指望什麼? – Henrik

回答

4

功能calcNumberOfPasses期待vector<int>類型的參數,你傳遞int類型的參數。你可以從錯誤信息中得到很多東西。

你在這一行復制一個未定義的值入載體:

nGrade.push_back(y); // y hasn't been initialised yet, you probably want to remove this line. 

下面您遍歷檔次載體,尚未尚未初始化的大小。

有機會,你想要做calcNumberOfPasses(nGrades);

另外,您應該使用對矢量的引用,以避免複製它。

總之,我會通過所有這些代碼,並重新開始。沒有惡意!

+0

另外值得一提的是,'calcNumberOfPasses'應該返回'int' ,但不會返回任何東西(也不會做任何有用的工作)。 – Grizzly

1

A vector是一個集合 - 一些基類的一組項目。它在概念上與數組相似。你正在做的是試圖重複加載一個變量,然後將它傳遞給一個函數,期望vector

試着打破你寫的函數的步驟。您是:

  1. 將單個未初始化的int添加到vector
  2. 嘗試檢索一個數字來控制要輸入的等級數。
  3. 將單個附加數字讀入y。
  4. 將該單個數字傳遞給需要數組的函數。

這個函數有很多錯誤;我認爲你需要確定哪些數據需要去哪裏。

相關問題