0

我是 C++ 新手,不知道出了什么问题。这是我在 uni 的编程课程中给出的一项任务,旨在获取用户输入的成绩向量并确定成绩是否及格。当我编译时,我最终得到一个错误,指出 q1.cpp:30:21: error: could not convert 'y' from 'int' to 'std::vector' 不太确定为什么。很抱歉格式错误。

我已经添加了代码,但不知道如何包装它。

#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);
}
4

2 回答 2

4

该函数calcNumberOfPasses需要一个类型的参数vector<int>,您正在向它传递一个类型的参数int。您可以从错误消息中得出这么多。

您正在将未定义的值复制到此行的向量中:

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

之后,您将遍历尚未初始化的等级向量的大小。

很有可能,你想做calcNumberOfPasses(nGrades);

顺便说一句,您应该使用对向量的引用,以避免复制它。

总之,我会通过所有这些代码并重新开始。没有恶意!

于 2012-09-04T13:32:29.097 回答
1

Avector是一个集合——一些基类的项目的分组。它在概念上类似于数组。您正在做的是尝试重复加载单个变量,然后将其传递给需要vector.

尝试分解您正在编写的函数的步骤。你是:

  1. 将一个未初始化的单个添加intvector.
  2. 试图检索一个数字来控制您要输入的成绩数量。
  3. 将一个附加数字读入 y。
  4. 将该单个数字传递给需要数组的函数。

这个功能有很多问题;我认为你需要确定哪些数据需要去哪里。

于 2012-09-04T13:40:48.807 回答