我的代码显示Vector下标超出范围

时间:2014-11-27 03:26:33

标签: c++ vector

我知道这段代码可能很丑,但我对编程很新,当我尝试运行它时,它告诉我Vector下标超出范围,我不知道问题出在哪里。我很确定这个错误意味着我在某处使用了一个实际上没有分配值的向量,但我似乎无法在任何地方找到它。我不知道从哪里开始。非常感谢帮助。

#include<iostream>
#include<cmath>
#include<vector>
 using namespace std;

double altitude(){
double alti;
cout << "Please input altitude in meters:";
cin >> alti;
return alti;
}
double RoC()
{
double climbR;
cout << "Please input climb rate in m/s:";
cin >> climbR;


return climbR;
}

double speed(){
double v;
cout << "Please input your current speed over ground in m/s" << endl;
cin >> v;
return v;
}

//  Gives you the time it will take to reach desired altitude
double time(double A, double R){
double t;
t = A / R;
return t;
}
//Distance travelled horizontally in given time
double distancetravelled(double Veloc, double Time){

double D;
D = Veloc*Time;

return D;
}
//This will convert time to days, hours, minutes, and seconds.
vector<double> time_to_hours_m_s(double input_seconds){
double days;
double hours;
double minutes;
double seconds;
days = input_seconds / 60 / 60 / 24;
hours = (input_seconds / 60 / 60) / 24;
minutes = (input_seconds / 60) / 60;
seconds = (input_seconds) / 60;
//puts values into a vector
vector<double>times;
times[0] = days;
times[1] = hours;
times[2] = minutes;
times[3] = seconds;

return times;


}


void print_vector(vector<int>converted_time){

cout << "The time it will take for the plane to reach its desired altitude is ";
cout << converted_time[0] << " days, ";
cout << converted_time[1] << " hours, ";
cout << converted_time[2] << " minutes and ";
cout << converted_time[3] << " seconds"; 

}


void print_result (double V, double D){

// This is for the distance it will travell horizontally in the time it takes to to climb.
cout << "The distance over ground you will travel will be ";
cout << D << " meters"<<endl;
}







int main(){
vector < double > converted_time;
double A;
double R;
double T;
double V;
double D;
double days = converted_time[0];
double hours = converted_time[1]; 
double minutes = converted_time[2];
double seconds = converted_time[3];
V = speed();
R = RoC();
A = altitude();
T = time(A, R);

D = distancetravelled(T,V);
time_to_hours_m_s(T);
print_result(V, D);
return 0;
}

1 个答案:

答案 0 :(得分:1)

在访问元素之前,必须将矢量调整为适当的大小:

vector< double > converted_time;
//...
double days = converted_time[0]; // no good

您正在访问第一个元素,但该向量没有要访问的元素。修复方法是确保向量的大小首先:

vector< double > converted_time(4);  // created 4 entries