函数在执行while循环时不更新变量
Function not updating variable as it goes through a while loop
#include <cstdlib>
#include <cmath>
#include <iomanip>
#include <iostream>
using namespace std;
//resistivity ohms*meters
/*
*
*/
double diameter (double wiregauge)
{
double k;
double diam;
k=((36-wiregauge)/39);
diam=(.127)*(pow(92,k));
diam=(diam/100);
return diam;
}
double copperWireResistance(double length, double wiregauge)
{
const long double PI=(atan(1)*4);
int b; //equals k in the first function
double diam1; //diameter of the wire
double cross_area_copper; //denominator of the equation
double numerator1; //numerator of the equation
double p; //resistivity of copper
double coppWireResistance;
b=((36-wiregauge)/39);
diam1=(.127*pow(92,b));
diam1=(diam1/100);
cross_area_copper=PI*(pow(diam1,2));
p=(1.678*(pow(10,-8)));
numerator1=((4*p)*length);
coppWireResistance=numerator1/cross_area_copper;
return coppWireResistance;
}
double aluminumWireResistance(double length, double wiregauge)
{
const long double PI=(atan(1)*4);
int a;
double diam2;
double numerator2;
double cross_area_alum;
double p1;
double alumWireResistance;
a=((36-wiregauge)/39);
diam2=(.127*pow(92,a));
diam2=(diam2/100);
cross_area_alum=(PI*pow(diam2,2));
p1=(2.82*pow(10,-8));
numerator2=((4*p1)*length);
alumWireResistance=numerator2/cross_area_alum;
return alumWireResistance;
}
int main(int argc, char** argv) {
double Max_N; //maximum wire gauge value
double L; //Length of the wire
double string_gauge=0;
cout<<"Maximum wire gauge value: ";
cin>>Max_N;
cout<<"Length of Wire: ";
cin>>L;
while(string_gauge<Max_N)
{
cout<<"String Gauge: "<<string_gauge<<endl;
cout<<"Diameter of wire: "<<diameter(string_gauge)<<endl;
cout<<"Copper Wire Resistance: "<<copperWireResistance(L,string_gauge)<<endl;
cout<<"Aluminum Wire Resistance: "<<aluminumWireResistance(L,string_gauge)<<endl;
string_gauge++;
cout<<endl;
}
return 0;
}
我试图让铜线电阻和铝线电阻更新,而它正在通过循环运行,但在第一个数字之后,它不更新到新的弦规。有什么需要我补充的吗?
您的wiregauge
参数在两个函数中的每一个都用于以下计算:
a=((36-wiregauge)/39); // in aluminumWireResistance
b=((36-wiregauge)/39); // in copperWireResistance
由于a
或b
是int
,并且wiregauge
是唯一从呼叫到另一个呼叫变化的参数。a
和b
总是等于0
。函数的返回值将始终是相同的。
要解决这个问题,可以将a
的类型更改为double
。
int a
杀死你在a=((36-wiregauge)/39);
中的除法,其余的从那里开始保持不变,直到你变成负数。
您在copperWireResistance
和aluminumWireResistance
函数中a
和b
变量有一些麻烦。你把它们声明为整型,但是在你的方程中,你得到了一个值,那个小的。
与结果一样,您总是获得从函数返回的相同值。
所以,类型更改为浮动或双。
p。并将Max_N
类型更改为int或long,如果您将数字与<运算符进行比较。
相关文章:
- cmake更新缓存的变量
- 为什么我的变量没有更新,我的 LED 没有亮起?
- 用非原子更新原子变量,反之亦然
- 字符串变量未更新 c++
- C++ 和 Boost.Python - 如何将变量公开给 python 并在循环中更新它?
- 为什么数组变量正在更新
- 为什么 beginthreadex 线程参数变量在父线程中没有更新
- 互斥体和变量更新
- 在 for 循环中更新两个变量时遇到问题C++
- 在这种情况下,当尝试从单独的类更新变量时,我是否需要使用指针?
- 如何使用 if 语句 MQL5 更新变量
- MainWindow的Worker线程的QT更新变量
- 我将如何连续更新变量,并同时等待输入
- 在条件上更新变量的最快方法是什么?
- MSVC2015更新3变量模板解决方法
- 如何有条件地同时多线程和更新变量
- 函数在执行while循环时不更新变量
- 从perl更新c++变量
- 指向变量的指针在解引用时没有更新变量
- 无法让它更新变量C++