C++问题,请大家帮忙解决下。

题目:求电阻值
条件:1、已知有N个电阻,每个电阻值为R(N,R值是运行后输入,判断是否为有效数字,如果不是有效数字,返回提示输入的为有效数字)
2、选择电路模式(串联或并联)
串联电阻公式:R1+R2+R3+...+Rn
联联电阻公式:1/R1+1/R2+...+1/Rn

第1个回答  2011-11-18
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;

//电阻类
class Resistance
{
public:
Resistance()
{
value = 0.0;
}
public:
float value;//电阻值
public:
bool InputValue()//输入电阻值
{
cout<<" 电阻值 = ";
try
{
cin>>value;
return true;
}
catch(...)
{
cout<<"输入了错误的值,请重新输入!"<<endl;
return false;
}
}
};

int main(void)
{
int ResistanceCount = 0;//电阻个数
int CombinationType = 0;//组合类型

cout<<"输入电阻个数 = ";
cin>>ResistanceCount;
cout<<"输入连接类型(1=串联,2=并联) = ";
cin>>CombinationType;

if ( ResistanceCount < 1 || (CombinationType != 1 && CombinationType != 2) )
{
cout<<"输入错误.";
}
else
{
Resistance *pR = new Resistance[ResistanceCount];
for ( int i = 0 ; i < ResistanceCount ; i++ )
{
while( ! pR[i].InputValue() )
{
;//直到输入成功
}
}

float result = 0.0;
for ( int i = 0 ; i < ResistanceCount ; i++ )
{
if ( CombinationType == 1 )
{
//串联
result += pR[i].value;
}
else if ( CombinationType == 2 )
{
//并联
result += (1/pR[i].value);
}
}

delete [] pR;

cout<<"计算结果为 : "<<result<<endl;
}

fflush(stdin);
getchar();
return 0;
}追问

如果输入的是不合法数据,则返回上一层,等输入的是数字再执行下面数据,这功能又如何实现?

相似回答