我的程序将运行,但它会打印出所有 100 个值,这些值应该完全不同
My program will run but it prints out all 100's for values that should be all different
我的程序将运行,但是当它达到打印出一些向量值的点时,它们都显示为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;
相关文章:
- 获取向量C++中第一个值和最后一个值的和
- "main"函数堆栈中的对象在第一个任务运行时被覆盖 (FreeRTOS)
- 如何在 C/C++ 中生成具有 n 组 5 个值(重复项)的所有可能排列的矩阵
- C++递归来决定数组中的两个值
- 运算符 [] 重载更新 2 个值 c++
- 我正在尝试根据 4 个方程找出六个值
- 将包含二进制数据的 QByteArray 传递到按值运行
- 如何在C++向量中解压缩多个值
- 单个变量如何存储多个值?
- 如何创建具有多个值的多个变量
- 从 AVL 树中删除指向 1 个或多个值的键
- 为什么 getch 在按下函数或箭头键时返回三个值?
- 为什么断点显示数组的第二个值是一个大数字?额外学分工作
- 具有多个值的无序列图及其查找
- 从递归函数 C++ 返回多个值
- 如何将 txt 文件中的多个值输入到数组C++中
- 将多个值插入到特定位置的矢量中
- 在 2 个并行运行的脚本(python 和 C++)之间传递消息
- 我的程序将运行,但它会打印出所有 100 个值,这些值应该完全不同
- 如何运行包含3个值的二维数组并检查这些值