运行失败,没有任何异常
Run fails without any exception
请看下面的代码
#include <iostream>
#include <iomanip>
#include <vector>
using namespace std;
int static carNumber = 1; //Counts the car number
static int vectorLocation = 0; // used to get the vector location
double total=0; // total amount of charges
vector<double>hoursVector; //tracks each car's parkes hour
vector<double>chargeVector; //tracks each charge
vector<int>carVector; //tracks each car number
double calculateCharge(double numberOfHours);
void printData();
void insertIntoVector(double hours, double charges);
int main()
{
cout << "Start entering data. -1 to exit nn " << endl;
double numberOfHours=0;
while(true)
{
cout << "Enter Number Of Hours"<< endl;
cin >> numberOfHours;
if(numberOfHours==-1)
{
break;
}
else
{
total = total + calculateCharge(numberOfHours);
}
}
printData();
}
//This code will calculate the charge values
double calculateCharge(double numberOfHours)
{
double charge = 0;
double extraHours = 0;
double extraCharge = 0;
if(numberOfHours<=3)
{
charge = 2;
insertIntoVector( numberOfHours, charge);
}
else if(numberOfHours>3 && numberOfHours<24)
{
extraHours = numberOfHours-3;
extraCharge = extraHours * 0.5;
charge = 2+extraCharge;
insertIntoVector( numberOfHours, charge);
}
else if(numberOfHours==24)
{
charge = 10;
insertIntoVector( numberOfHours, charge);
}
else if(numberOfHours>24)
{
charge = 0;
insertIntoVector( numberOfHours, charge);
}
return charge;
}
//This code is used to enter data into vectors
void insertIntoVector(double hours, double charges)
{
hoursVector[vectorLocation] = hours;
chargeVector[vectorLocation] = charges;
carVector[vectorLocation] = carNumber++;
vectorLocation++;
carNumber++;
}
//This method is used to print data
void printData()
{
cout << "Car"<< setw(6)<< "Hours" << setw(6) << "Charge" << endl;
for(size_t i=0;i<hoursVector.size();i++)
{
cout << carVector[i] << setprecision(2) << fixed << setw(6) << hoursVector[i] << setw(6) << chargeVector[i] << endl;
}
}
在这里,在 while 循环中给出 1 个数据后,程序终止给出错误
运行失败(退出值 1,总时间:5 秒)
我不明白为什么。我是C++新手,自己学习。请帮助我更正此代码并毫无问题地运行它。
问题是
hoursVector[vectorLocation] = hours;
chargeVector[vectorLocation] = charges;
carVector[vectorLocation] = carNumber++;
这些元素尚不存在。您必须使用push_back
来动态增加矢量的大小。
hoursVector[vectorLocation] = hours;
chargeVector[vectorLocation] = charges;
carVector[vectorLocation] = carNumber++;
vectorLocation++;
这是插入矢量的无效方式。你应该做这样的事情:
hoursVector.push_back( hours );
chargeVector.push_back( charges );
carVector.push_back( carNumber++ );
std::vector 本身包含有关他分配的内存块的信息;块的大小;当前存储的数据大小等等。在需要时,它会扩展内存块以允许您推送新值。因此,当您使用索引时,您只是耗尽了分配的内存块(在这种情况下)。无论如何,将值添加到向量中都不是有效的方法,因此必须替换为匹配方法。请参阅链接以获取有关 std::vector 方法的帮助。
相关文章:
- 为什么 c++ 使用 throw() 关键字来指示函数不会引发任何异常
- 代码不会处理任何异常
- HTTP异常::无法连接到任何解决的端点-CPPRESTSDK
- std:任何抛出异常解析函数类型
- 是否存在与将数据流式传输到 c++ 异常类相关的任何危险
- 为什么重载运算符上的异常说明符'<<'不适用于任何 std::ostream 对象,但对库中定义的运算符不起作用?
- STL 中是否有任何错误代码异常
- 0x80020009 OLE异常访问除0以外的任何数字
- 运行失败,没有任何异常
- C++例外:不要收到任何异常
- ASSIMP 导出导入的场景而不进行任何更改会引发异常
- 有没有任何方法可以捕获在构造静态/全局时抛出的异常
- 是否有任何运动来指定c++异常和pthread取消的交互?< / h1 >
- 有没有任何方法可以在C++中导致整个堆栈框架展开?(使用异常除外)
- 是否有任何理由通过值捕获异常
- 在for循环内部使用时,是否存在任何异常甚至极端的情况,即后增量实际上比预增量更好
- 程序崩溃并显示消息"terminate called recursively"而不引发任何异常
- boost::crc_32_type是否生成任何异常
- Java UncaughtExceptionHandler 使用 JNI 没有任何异常
- 是否有任何异常是catch(...)可以处理的,而catch(exception&ex)不能处理的?