0

私は C++ が初めてで、何が問題なのかわかりません。これは、大学のプログラミング コースで私が与えられたタスクで、ユーザーが成績のベクトルを入力し、成績が合格かどうかを判断することを目的としています。コンパイルすると、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は type のパラメーターを期待していますが、typevector<int>のパラメーターを渡していますint。エラーメッセージからわかることはそれだけです。

この行のベクトルに未定義の値をコピーしています:

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

その後、まだ初期化されていない grades ベクトルのサイズをループしています。

チャンスは、あなたがしたいですcalcNumberOfPasses(nGrades);

余談ですが、ベクターへの参照を使用して、コピーを避ける必要があります。

要約すると、このコードをすべて片付けて、最初からやり直します。悪気ない!

于 2012-09-04T13:32:29.097 に答える
1

Avectorはコレクションです。ある基本クラスのアイテムのグループです。概念的には配列に似ています。あなたがしていることは、単一の変数を繰り返しロードしてから、それを期待する関数に渡そうとしていることですvector

書いている関数のステップを分解してみてください。あなたは:

  1. 初期化されていない単一の を に追加しintますvector
  2. 入力する成績の数を制御する数値を取得しようとしています。
  3. 追加の 1 つの数値を y に読み込みます。
  4. その単一の数値を、配列を期待する関数に渡します。

この関数には多くの問題があります。どのデータがどこに行く必要があるかを計画する必要があると思います。

于 2012-09-04T13:40:48.807 に答える