Ошибка преобразования int y в вектор & lt; int & gt; есть идеи?

Я новичок в 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);
}

0

Решение

Функция calcNumberOfPasses ожидает параметр типа vector<int>, вы передаете ему параметр типа int, Это вы можете понять из сообщения об ошибке.

Вы копируете неопределенное значение в вектор в этой строке:

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

После этого вы перебираете размер вектора оценок, который еще не был инициализирован.

Скорее всего, вы хотите сделать calcNumberOfPasses(nGrades);,

Кроме того, вы должны использовать ссылку на вектор, чтобы избежать его копирования.

Таким образом, я бы через весь этот код прочь и начать заново. Не в обиду!

4

Другие решения

vector это коллекция — это группировка предметов некоторого базового класса. Концептуально это похоже на массив. То, что вы делаете, это пытаетесь повторно загрузить одну переменную, а затем передать ее в функцию, которая ожидает vector,

Попробуйте разбить шаги написанной вами функции. Вы:

  1. Добавление одного неинициализированного int к vector,
  2. Попытка получить число, чтобы контролировать количество оценок, которые вы хотите ввести.
  3. Чтение одного дополнительного числа в y.
  4. Передача этого единственного числа в функцию, которая ожидает массив.

Есть много вещей не так с этой функцией; Я думаю, что вам нужно наметить, какие данные должны идти куда.

1