Есть некоторые проблемы с вашим кодом:
Ваши циклы закодированы неправильно.
for (int i = 0; i <= n; i++)
должно быть for (int i = 0; i < n; i++)
, в противном случае вы получите +На 1 элемент больше, чем указано пользователем.
И z = v.front(); while (z != v.back()) { ... z = z + 1; }
фактически совпадает с for(z = 0; z < n; z++)
, когда вы заполняете std::vector
индексными числами, новы на самом деле не используете эти значения для чего-либо значимого, что вы не можете использовать другие переменные для того же самого, поэтому вы можете просто исключить vector
в целом.
вашПеременная sum
содержит взвешенную оценку только 1 назначения за раз, поэтому, когда вы ее cout
, она выводит оценку последней введенной записи. Вы не сохраняете совокупный результат всех введенных назначений.
Вместо этого попробуйте что-нибудь подобное:
#include <iostream>
using namespace std;
int main()
{
double weight;
double grade;
double sum = 0.0;
int n;
cout << "how many quizzes/projects/major assignments do you have?" << endl;
cin >> n;
for (int i = 0; i < n; i++)
{
cout << "what is the weight of test # " << i + 1 << " as a decimal" << endl;
cin >> weight;
cout << "what was your grade on test # " << i + 1 << endl;
cin >> grade;
sum += (weight * grade);
}
cout << sum << endl;
}
Если выесли вы действительно хотите использовать std::vector
, вы должны заполнить его фактическими значениями, а затем суммировать их вместе, например:
#include <iostream>
#include <vector>
using namespace std;
struct assignment
{
double weight;
double grade;
};
int main()
{
vector<assignment> v;
double sum = 0.0;
int n;
cout << "how many quizzes/projects/major assignments do you have?" << endl;
cin >> n;
for (int i = 0; i < n; i++)
{
assignment a;
cout << "what is the weight of test # " << i + 1 << " as a decimal" << endl;
cin >> a.weight;
cout << "what was your grade on test # " << i + 1 << endl;
cin >> a.grade;
v.push_back(a);
}
for (int i = 0; i < n; i++)
{
sum += (v[i].weight * v[i].grade);
}
cout << sum << endl;
}
или:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<double> v;
double weight;
double grade;
double sum = 0.0;
int n;
cout << "how many quizzes/projects/major assignments do you have?" << endl;
cin >> n;
for (int i = 0; i < n; i++)
{
cout << "what is the weight of test # " << i + 1 << " as a decimal" << endl;
cin >> weight;
cout << "what was your grade on test # " << i + 1 << endl;
cin >> grade;
v.push_back(weight * grade);
}
for (int i = 0; i < n; i++)
{
sum += v[i];
}
// or simply:
// #include <numeric>
// sum = accumulate(v.begin(), v.end(), 0.0);
cout << sum << endl;
}