C++ 我的程序将运行,但它会打印出所有100';s表示应该完全不同的值

C++ 我的程序将运行,但它会打印出所有100';s表示应该完全不同的值,c++,vector,cout,C++,Vector,Cout,我的程序会运行,但当它打印出一些向量值时,它们都会显示为100,就我的编程技能而言(这是相当低的),我看不出有任何理由它应该创建全部为100的值。我想这可能与输入秒有关,但我不确定。有什么不对的建议吗 #include<iostream> #include<cmath> #include<vector> using namespace std; double altitude(){ double alti; cout << "Pl

我的程序会运行,但当它打印出一些向量值时,它们都会显示为100,就我的编程技能而言(这是相当低的),我看不出有任何理由它应该创建全部为100的值。我想这可能与输入秒有关,但我不确定。有什么不对的建议吗

#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> converted_time(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<double>converted_time){
    cout << "The time it will take for the plane to reach its desired altitude is ";
    cout << converted_time[0] << " days, " << endl;
    cout << converted_time[1] << " hours, ";
    cout << converted_time[2] << " minutes and ";
    cout << converted_time[3] << " seconds" << endl;
}

void print_result (double V, double D){
    cout << "The distance over ground you will travel will be ";
    cout << D << " meters"<<endl;
}

int main(){
    double A;
    double R;
    double T;
    double V;
    double D;
    R = RoC();
    A = altitude();
    T = time(A, R);
    vector<double>converted_time(4);

    double days = converted_time[0];
    double hours = converted_time[1]; 
    double minutes = converted_time[2];
    double seconds = converted_time[3];

    V = speed();
    D = distancetravelled(T,V);

    print_result(V, D);
    print_vector(converted_time);
    return 0;
}
#包括
#包括
#包括
使用名称空间std;
双高度(){
双高度;
cout>alti;
返回高度;
}
双RoC()
{
双攀援者;
攀援者;
返回攀登者;
}
双速{
双v;
coutv;
返回v;
}
//提供到达所需高度所需的时间
双倍时间(双倍A,双倍R){
双t;
t=应收;
返回t;
}
//在给定时间内水平行驶的距离
双距离行驶(双速度、双时间){
双D;
D=速度*时间;
返回D;
}
//这将把时间转换为天、小时、分钟和秒。
矢量转换时间(双输入秒){
双日;
双倍小时;
两分钟;
双秒;
天=输入秒/60/60/24;
小时=(输入秒/60/60)/24;
分钟=(输入_秒/60)/60;
秒=(输入秒)/60;
//将值放入向量中
向量时间;
次数[0]=天;
次数[1]=小时;
次数[2]=分钟;
次数[3]=秒;
返回次数;
}
无效打印向量(向量转换时间){

cout此向量从未为其成员分配任何空间:

vector<double> times;
需要改变

hours = (input_seconds / 60 / 60) / 24;
minutes = (input_seconds / 60) / 60;
seconds = (input_seconds) / 60;


问题1:您没有正确计算小时、分钟和秒

 days = input_seconds / 60 / 60 / 24;

 // hours = (input_seconds / 60 / 60) / 24;
 // This is wrong since it is same as 
 // hours = input_seconds / 60 / 60 / 24;
 // You need:
 hours = (input_seconds / 60 / 60) % 24;

 // Similarly, change how you compute minutes and seconds.
 minutes = (input_seconds / 60) % 60;
 seconds = (input_seconds) % 60;
问题2:在为元素赋值之前,没有创建足够大的向量

 // vector<double> times;
 // This creates an empty vector. Use:
 vector<double> times(4);

 times[0] = days;
 times[1] = hours;
 times[2] = minutes;
 times[3] = seconds;
只需将转换时间定义为局部变量即可。您需要如下内容:

vector<double> convertedTimes = converted_time(4);
向量转换时间=转换时间(4);

没有检查所有内容,但只有
天的初始化是正确的,
小时
分钟
都有一个额外的6o除法,您应该删除。
小时=(输入秒/60)/60;
分钟=(输入秒/60)
seconds=输入秒;
给向量转换的时间分配什么(4)总的来说?我只是想说,你可能应该重构代码,你有很多多余的行,而且命名方式也让我感到厌烦。我不是唯一一个觉得很难阅读的人。另外,为了解决为什么你的输出为100,请提供你有什么输入?好的,我明白你的意思,但是我如何正确地调用转换的tim函数?可能:
vector foo=转换时间(4)
但这会不会将天、小时、分钟和秒显示为彼此相等?我正在尝试使它的读数像3600秒是0天、60小时、0分钟和0秒。或者3800秒是0天、1小时、3分钟和18秒。@CalElliott检查编辑。它应该可以根据需要工作。如果我使用10,0的值00秒,它打印出2.77778小时、0分钟和0秒。我需要它将0.77778小时转换为分和秒?有什么方法可以做到吗?@CalElliott为此,你需要将所有这些变量键入int。我意识到这可能会让你感到恼火,我非常感谢你的帮助,但我真的是一个初学者,我不知道如何你能解释一下吗?
 // vector<double> times;
 // This creates an empty vector. Use:
 vector<double> times(4);

 times[0] = days;
 times[1] = hours;
 times[2] = minutes;
 times[3] = seconds;
vector<double> converted_time(4);
vector<double> convertedTimes = converted_time(4);