闲来无事给你写了个,面向对象的。
#include <iostream>
using namespace std;
class Calc
{
public:
char m_Funtion[10];
void Run();
private:
float F1(int x);
int F2(int x);
int F3(int x);
int F4(int x);
bool Check();
int Factorial(int x);
};
void Calc::Run()
{
while(true)
{
memset(m_Funtion,0,10);
cout<< "请输入计算公式:"<<endl;
cout<< "退出请输入E"<<endl;
cin>>m_Funtion;
if (strcmp(m_Funtion,"E") == 0)
{
cout<<" 程序退出! "<<endl;
break;
}
if ( m_Funtion[0] != 'F' || ( m_Funtion[1] != '1' && m_Funtion[1] != '2' && m_Funtion[1] != '3' && m_Funtion[1] != '4' ) || m_Funtion[2] != '(' )
{
cout<< "输入的公式格式错误:" <<endl;
memset(m_Funtion,0,10);
continue;
}
int t = 0;
bool b = false;
for (int i = 3;i<= 9;i++)
{
if (m_Funtion[i] == ')')
{
t = i;
b = true;
}
}
if (!b)
{
cout<< "输入的公式格式错误:" <<endl;
memset(m_Funtion,0,10);
continue;
}
char parm[10];
memcpy(parm,&m_Funtion[3],t - 3 );
t = atoi(parm);
switch( m_Funtion[1])
{
case '1':
cout << "结果是:" << F1(t) << endl;
break;
case '2':
cout << "结果是:" << F2(t) << endl;
break;
case '3':
cout << "结果是:" << F3(t) << endl;
break;
case '4':
cout << "结果是:" << F4(t) << endl;
break;
}
}
}
float Calc::F1(int x)
{
float sum = 0;
for (int i = 1;i<= x;i++)
{
if (i % 2 == 0)
{
sum -= (1.0 / (float)( 2 * i - 1) );
}
else
{
sum += (1.0 / (float)( 2 * i - 1) );
}
}
return sum;
}
int Calc::F2(int x)
{
int sum = 0;
for (int i = 1;i<= x;i++)
{
sum += Factorial(i);
}
return sum;
}
int Calc::F3(int x)
{
int sum = 0;
for (int i = 1;i<= x;i++)
{
sum += (i*10 + i);
}
return sum;
}
int Calc::F4(int x)
{
int sum = 0 ;
int a = 1;
int b = 1;
if (x == 1)
{
return a;
}
if (x == 2)
{
return a + b;
}
sum = 2;
for (int i = 3;i<= x;i++)
{
int temp = 0;
temp = b;
b = a + b;
a = temp;
sum += b;
}
return sum;
}
int Calc::Factorial(int x)
{
int sum = 1;
for (int i = 1 ; i<= x;i++)
{
sum *= i;
}
return sum;
}
int main()
{
Calc calc;
calc.Run();
//system("pause");
return 0;
}
温馨提示:答案为网友推荐,仅供参考