2012-09-04 38 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. 将该单个数字传递给需要数组的函数。

这个函数有很多错误;我认为你需要确定哪些数据需要去哪里。

相关问题