Я новичок в C ++ и не уверен, что не так. Это задача, которую мне дали в моем курсе по программированию в универе, который предназначен для того, чтобы получить пользовательский ввод вектора оценок и определить, является ли оценка проходной. Когда я компилирую, я получаю сообщение об ошибке q1.cpp: 30: 21: error: не удалось преобразовать y из int в 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);
}
Функция calcNumberOfPasses
ожидает параметр типа vector<int>
, вы передаете ему параметр типа int
, Это вы можете понять из сообщения об ошибке.
Вы копируете неопределенное значение в вектор в этой строке:
nGrade.push_back(y); // y hasn't been initialised yet, you probably want to remove this line.
После этого вы перебираете размер вектора оценок, который еще не был инициализирован.
Скорее всего, вы хотите сделать calcNumberOfPasses(nGrades);
,
Кроме того, вы должны использовать ссылку на вектор, чтобы избежать его копирования.
Таким образом, я бы через весь этот код прочь и начать заново. Не в обиду!
vector
это коллекция — это группировка предметов некоторого базового класса. Концептуально это похоже на массив. То, что вы делаете, это пытаетесь повторно загрузить одну переменную, а затем передать ее в функцию, которая ожидает vector
,
Попробуйте разбить шаги написанной вами функции. Вы:
int
к vector
,Есть много вещей не так с этой функцией; Я думаю, что вам нужно наметить, какие данные должны идти куда.