#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;
}
追问如果输入的是不合法数据,则返回上一层,等输入的是数字再执行下面数据,这功能又如何实现?