我正在尝试编写一个程序,并且我的编译器在第一个for循环之后得到一个错误。我一直试图修复它很长一段时间,但它不起作用。我的编译器说有一个std :: out_of_range错误。顺便说一句,我在编码中。向量给出的错误
#include <iostream>
#include <vector>
using namespace std;
int main()
{
/* A = 4
B = 3
C = 2
D = 1
F = 0*/
double gpa = 0;
char grade;
int gradeamount;
cout << "Welcome to GPA calculator. This tells you your GPA by inputting your grades. How many grades do you have." << endl;
cin >> gradeamount;
cin.ignore();
vector<char> grades;
for(int i = 1; i <= gradeamount; i++)
{
cout << "What is your " << i << " grade? In Caps Please." << endl;
cin >> grade;
cin.ignore();
grades.push_back(grade);
}
for(int i = 0; i <= (int) grades.size(); i++)
{
if(grades.at(i) = 'A')
gpa += 4;
else if(grades.at(i) = 'B')
gpa += 3;
else if(grades.at(i) = 'C')
gpa += 2;
else if(grades.at(i) = 'D')
gpa += 1;
else if(grades.at(i) = 'F')
gpa +=0;
else
{
cout << "That is not a grade, if it is try capitalizing it." << endl;
int main();
}
}
gpa /= (double) grades.size();
cout << "Your GPA is: " << gpa << endl;
}
'int i = 0;我<=(int)grades.size();'几乎从不正确 - 应该只是**'<** **。将额外的'='移到这里:'if(grades.at(i)='A')',因为这是一个赋值,而不是比较。 –
解决此类问题的正确工具是您的调试器。在*堆栈溢出问题之前,您应该逐行执行您的代码。如需更多帮助,请阅读[如何调试小程序(由Eric Lippert撰写)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。至少,你应该[编辑]你的问题,以包含一个[Minimal,Complete,and Verifiable](http://stackoverflow.com/help/mcve)例子来重现你的问题,以及你在调试器中所做的观察。 –