求问一题c++,具体题目在里面 100
外教布置的,简单翻译下关于风力涡轮机和风力发电厂的项目以下数据(图形)显示了当风带动涡轮机叶片转动时,涡轮机能量输出随风速变化的近似值。当风速较低,发电机不能产生任何可用...
外教布置的,简单翻译下
关于风力涡轮机和风力发电厂的项目
以下数据(图形)显示了当风带动涡轮机叶片转动时,涡轮机能量输出随风速变化的近似值。当风速较低,发电机不能产生任何可用能源,而当风速大于Vcut in时,发电机的输出能量随风速线性增长,直到达到Pmax,也就是发电机的额定输出能量。这时的风速值称为Vmax。当风速大于Vmax,发电机输出额定能量值直到风速超过能安全工作环境下的最大风速值Vcut out。在此速度下风力涡轮机的能量输出值减至零。
在这个项目中你需要建立一个叫做“WindTurbine”的类来模拟一个风力发电机,这个类要包含变量成员来存储以下信息:Vcut in Vmax Vcut out 和Pmax。这些变量要在创建类的对象时就设置好数值。需要用到getter函数来读取这些成员函数中的值。类中要有一个以风速为参数的成员函数getOutputPower()来返回在此风速下发电机产生的能量值。
建立另一个类叫做“WindFarm”来模拟一个国家某地区的多种不同的发电机。这个类要包含一个成员变量,它储存了“WindTurbine”类中的一个数组对象。并且应该能够实现通过“WindTurbine”类的成员函数来读取存在“WindFarm”类中的“WindTurbine”类的私有成员变量储存的值。(啊啊这个地方好混乱)“WindTurbine”类中以风速为参数值的成员函数getOutputPower()应当返回整个风力发电场的能量总输出值。 展开
关于风力涡轮机和风力发电厂的项目
以下数据(图形)显示了当风带动涡轮机叶片转动时,涡轮机能量输出随风速变化的近似值。当风速较低,发电机不能产生任何可用能源,而当风速大于Vcut in时,发电机的输出能量随风速线性增长,直到达到Pmax,也就是发电机的额定输出能量。这时的风速值称为Vmax。当风速大于Vmax,发电机输出额定能量值直到风速超过能安全工作环境下的最大风速值Vcut out。在此速度下风力涡轮机的能量输出值减至零。
在这个项目中你需要建立一个叫做“WindTurbine”的类来模拟一个风力发电机,这个类要包含变量成员来存储以下信息:Vcut in Vmax Vcut out 和Pmax。这些变量要在创建类的对象时就设置好数值。需要用到getter函数来读取这些成员函数中的值。类中要有一个以风速为参数的成员函数getOutputPower()来返回在此风速下发电机产生的能量值。
建立另一个类叫做“WindFarm”来模拟一个国家某地区的多种不同的发电机。这个类要包含一个成员变量,它储存了“WindTurbine”类中的一个数组对象。并且应该能够实现通过“WindTurbine”类的成员函数来读取存在“WindFarm”类中的“WindTurbine”类的私有成员变量储存的值。(啊啊这个地方好混乱)“WindTurbine”类中以风速为参数值的成员函数getOutputPower()应当返回整个风力发电场的能量总输出值。 展开
2个回答
展开全部
#include <iostream.h>
const double pars[4][4] = { // 不同类型风力发电机参数
{3,15,25,0.25},{5,15,25,0.35},{8,20,30,0.5},{5,25,35,0.4}
};
class WindTurbine {
private :
double Vcut_in;
double Vmax;
double Vcut_out;
double Pmax;
double Vcurrent; // 当前风速
double Pcurrent; // 当前输出功率;
public :
WindTurbine(double vin = 0,double vm = 0,double vout = 0,double pm = 0,double vc = 0) {
Vcut_in = vin;
Vmax = vm;
Vcut_out = vout;
Pmax = pm;
Vcurrent = vc;
if(Vcurrent < Vcut_in || Vcurrent > Vcut_out) Pcurrent = 0;
else if(Vcurrent >= Vcut_in && Vcurrent < Vmax)
Pcurrent = Pmax * (Vcurrent - Vcut_in) / (Vmax - Vcut_in);
else Pcurrent = Pmax;
}
double getOutputPower() const { return Pcurrent; }
double getVcurrent() const { return Vcurrent; }
};
WindTurbine Update(char type, double vc) {
int t = type - 'A';
if(t < 0 || t > 3) {
cout << "type : " << type << "?, 类型错误。\n";
return WindTurbine();
}
return WindTurbine(pars[t][0],pars[t][1],pars[t][2],pars[t][3],vc);
}
class WindFarm {
private :
enum {MAXSIZE = 50};
WindTurbine wts[MAXSIZE];
int size;
public :
WindFarm(char type[], double vc[], int n) {
size = n;
for(int i = 0; i < n; ++i)
wts[i] = Update(type[i],vc[i]);
}
double GetTotalPower() const {
double sum = 0;
for(int i = 0; i < size; ++i)
sum += wts[i].getOutputPower();
return sum;
}
};
int main() {
char type[12] = {"ADBCDBCADC"}; // 发电机类型
double vc[10] = {9,30,0,20,35,10,31,24,5,25}; // 对应的环境工作风速
/*
A, 9,Vcut_in < 9 < Vmax,线性区 -- 0.125
D,30, Vmax < 30 < Vcut_out,恒定区 -- 0.4
B, 0, 0 < Vcut_in,风速不及阈值下限,无功率输出 -- 0
C,20, 20 = Vmax,达到满功率输出阈值 -- 0.5
D,35, 35 = Vcut_out,满功率输出 -- 0.4
B,10, Vcut_in < 10 < Vcut_out, 线性区 -- 0.175
C,31, 31 > Vcut_out, 超极限,无功率输出 -- 0
A,24, Vmax < 25 < Vcut_out,满功率输出 -- 0.25
D,15, Vcut_in < 15 < Vmax,线性区 -- 0.2
C,25, Vmax < 25 < Vcut_out,满功率输出 -- 0.2 ......... 总计:2.35 MW
*/
WindFarm wf(type, vc,10);
cout << "总功率为:" << wf.GetTotalPower() << "(MW)\n";
return 0;
}
更多追问追答
追问
WindTurbine”的类,类中要有一个以风速为参数的成员函数getOutputPower()来返回在此风速下发电机产生的能量值。
追答
double WindTurbine::getOutputPower(char type, double vc) {
int t = type - 'A';
if(t < 0 || t > 3) {
cout << "type : " << type << "?, 类型错误。\n";
return 0;
}
WindTurbine wt(pars[t][0],pars[t][1],pars[t][2],pars[t][3],vc);
return wt.getOutputPower();
}
展开全部
这道题不难,应该刚上到面向对象基础吧?
#include <iostream>
#include <vector>
class WindTurbine
{
public:
WindTurbine(double Vcutin, double Vmax, double Vcutout, double Pmax) {
m_Pmax = Pmax;
m_Vmax = Vmax;
m_Vcutin = Vcutin;
m_Vcutout = Vcutout;
}
// getters
double getPmax() const { return m_Pmax; }
double getVmax() const { return m_Vmax; }
double getVcutin() const { return m_Vcutin; }
double getVcutout() const { return m_Vcutout; }
double getOutputPower(double windSpeed) const {
if( windSpeed < m_Vcutin ) return 0.0;
else if( windSpeed < m_Vmax ) {
return (windSpeed - m_Vcutin) * m_Pmax / (m_Vmax - m_Vcutin);
}
else if( windSpeed < m_Vcutout) return m_Pmax;
else return 0.0;
}
private:
double m_Pmax;
double m_Vmax;
double m_Vcutin;
double m_Vcutout;
};
class WindFarm
{
public:
void addWindTurbine(WindTurbine& windTurbine, int count=1) {
for(int i=0; i<count; ++i) {
m_vWindTurbines.push_back(windTurbine);
}
}
double getOutputPower(double windSpeed) {
double res = 0.0;
int sz = m_vWindTurbines.size();
for(int i = 0; i < sz; ++i) {
res += m_vWindTurbines[i].getOutputPower(windSpeed);
}
return res;
}
private:
std::vector<WindTurbine> m_vWindTurbines;
};
int main(int argc, char *argv[])
{
WindTurbine A(3, 15, 25, 0.25);
WindTurbine B(5, 15, 25, 0.35);
WindTurbine C(8, 20, 30, 0.5);
WindTurbine D(5, 25, 35, 0.4);
WindFarm farm;
farm.addWindTurbine(A);
farm.addWindTurbine(B, 2);
farm.addWindTurbine(C, 3);
farm.addWindTurbine(D, 4);
double windSpeed;
std::cout << "Input wind speed(m/s):";
std::cin >> windSpeed;
std::cout << "Windfarm total output power is "
<< farm.getOutputPower(windSpeed)
<< "(MW) when wind speed is "
<< windSpeed
<< "(m/s).";
return 0;
}
后续学习如有问题,欢迎与我探讨:xusiwei1236@163.com
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询