我的程序将运行,但它会打印出所有 100 个值,这些值应该完全不同

My program will run but it prints out all 100's for values that should be all different

本文关键字:个值 运行 程序 打印 我的      更新时间:2023-10-16

我的程序将运行,但是当它达到打印出一些向量值的点时,它们都显示为100,就我的编程技能而言(这很低),我认为没有理由它应该创建全部为100的值。我认为这可能与input_seconds有关,但我不确定。 有什么问题的任何建议吗?

#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;
}

问题 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;

问题 3:您没有在 main 中调用函数converted_time

vector<double> converted_time(4);

只是将converted_time定义为局部变量。你需要这样的东西:

vector<double> convertedTimes = converted_time(4);

此向量永远不会为其成员分配任何空间:

vector<double> times;

而且你也从来没有真正正确地调用converted_time函数:

vector<double> converted_time(4);

需要更改

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

hours = ((int)input_seconds / 60) / 60;
input_seconds -= (int)hours * 60 *60;
minutes = ((int)input_seconds / 60);
input_seconds -= (int)minutes * 60;
seconds = (int)input_seconds;