gpt4 book ai didi

c++ - 在方程式中使用二维数组

转载 作者:行者123 更新时间:2023-11-28 06:18:16 26 4
gpt4 key购买 nike

最近我一直在研究在给定值下计算斜率的发动机推力。

我已经得到了很多代码可以工作,但我似乎无法让方程函数工作。该人应该根据图表和牛顿上的特定点列出值,然后给出不同的时间,计算机将在给定时间之间找到一个值并进行斜率计算。

当然那是行不通的,此时我真的迷路了,我 100% 确定我的循环在函数中是错误的,但我不确定我的等式是错误的。

基本上程序应该这样做

x   y
.19 14.5
.24 6.0
.40 4.4

Enter a time: .21

((.21-.19)/.24-.19))*(6-14.5)+14.5=11.1

the thrust at time .21 is 11.1

来源

#include <iostream>
#include <cstdlib>
#include <cmath>
#include <string>
#include <iomanip>
#include <fstream>
using namespace std;

const int grid_rows=50;
const int grid_cols=2;

double slope(double thrust[grid_rows][grid_cols],double time);

// Constant Declarations
const double PI = 3.1415926535; // the radius/diameter of a circle

// Main Program
int main( )
{
system("CLS");
cout << "Take Home #12 by - "
<< "CETUA\n\n";

double thrust[grid_rows][grid_cols];
double time;
double newton;
char ans;
int i=0;
int j=0;

cout << "Enter thrust curve data (0 for thrust end list): "<<endl;
for(i=0;i < grid_rows; i++)
{
for(j=0; j< grid_cols;j++)
{
cin >> thrust[i][j];
if(thrust[i][j]==0)
{
break;
}
}
if(thrust[i][j]==0)
{
break;
}
}


do
{
cout << "Enter a time: "<<endl;
cin >> time;

newton=slope(thrust,time);

cout << "The thrust at time "<<time << " is " << newton << " newtons." <<endl:
cout << "Would you like another thrust value? (Y or N): " <<endl;
cin >> ans;
}while(ans=='Y'||ans=='y');
}

double slope(double thrust[50][2],double time)
{
double newton;

while(time > thrust[50][2]);
{
for(int i=0;i < grid_rows; i++)
{
for( int j=0; j< grid_cols;j++)
{
newton=((time - thrust[i][j])/(thrust[i][j]-thrust[i][j]))
*(thrust[i][j]-thrust[i][j])+thrust[i][j];
return newton;
}
}
}
}

最佳答案

double slope(double thrust[50][2],double time)
{
double newton;

while(time > thrust[50][2]);
{
for(int i=0;i < grid_rows; i++)
{
for( int j=0; j< grid_cols;j++)
{
newton=((time - thrust[i][j])/(thrust[i][j]-thrust[i][j]))
*(thrust[i][j]-thrust[i][j])+thrust[i][j];
return newton;
}
}
}
}

我发现您的算法存在一些问题。

1) 这里出现被零除的错误。

((time - thrust[i][j])/(thrust[i][j]-thrust[i][j]))

2) 你的循环永远不会运行(总是在第一次迭代时返回)。

return newton; 

3) 如果你修复了 (2),请记住你可能永远陷入 while 循环,(time 和 thrust[50][2] 的值从未改变)。

也是“;”在 while 循环结束时故意的?

while(time > thrust[50][2]);

您可能希望将斜率方法更改为以下内容。

double slope (double x1, double x2, double y1, double y2, double time){

double result = 0;
if ((x2-x1) != 0 ){ // google 'double comparison" you may want to use EPSILON instead
result = ((time - x1)/(x2-x1)) * (y2-y1) + y1
}
return result;
}

要使用它,您可能需要执行以下操作。

... assuming trust 
[row][0] contains all the x
[row][1] contains all the y
double [lastEntry-1] results;
for(int i=0; i< lastEntry-1; i++){

results[i] = slope ( thrust[i][0], //x1
thrust[i+1][0],//x2
thrust[i][1], //y1
thrust[i+1][1],//y2
time);
}

我将如何填充 cin 的推力作为练习留给您。

关于c++ - 在方程式中使用二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29812918/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com