急急急!!!!我们C++老师给我们布置了个作业,不会做!求好心人帮帮忙!!!明天就要交的!!!

1、内容要求(60分):
编写一个公式计算器,能够计算如下公式:
l F1(x) = 1 - 1/3 + 1/5 – 1/7 + …1/x ;
l F2(x) = 1!+ 2!+ 3!+…x! ;
l F3(x) = 11+ 22 + 33 + 44 + …+xx;
l F4(x) = 1 + 1 + 2 + 3 + 5 + 8 +13 + 21 + 34 +…;

2、设计要求(20分):
输入“F1(x)”,执行F1(x)公式,其中x是公式F1的参数,如输入F1(3),则输出显示1 - 1/3 + 1/5 = 0.867;
输入“F2(x)”,执行F2(x)公式,其中x是公式F2的参数,如输入F2(3),则输出显示1!+ 2!+ 3!= 9;
输入“F3(x)”,执行F3(x)公式,其中x是公式F3的参数,如输入F3(3),则输出显示11+ 22 + 33= 32;
输入“F4(x)”,执行F4(x)公式,其中x是公式F4的参数,如输入F4(3),则输出显示1 + 1 + 2 = 4。

3、技术要求(20分):
设计流程规范详细、步骤高效合理、内容充分全面,注释清晰。充分运用所学的知识对系统所涉及到的类、函数进行正确设计编码,并使用面向对象思想设计编程。
帮帮忙吧!!!

闲来无事给你写了个,面向对象的。

#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;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-27
完成了基本的要求,其他的自己弄吧。没什么时间。呵呵!
#include <stdio.h>
#include <string.h>
void main()
{
float F1(int);//声明函数
int F2(int);
int F3(int);
int F4(int);
int jc(int);
char str[10];//使用的变量
char num[10];
int number;
int i=3;
printf("输入F1(x)~F2(x)~F3(x)~F4(x)\n");
scanf("%s",str);
if(str[i]!=')'){
num[i-3]=str[i];
i++;
}
num[i-3]='\0';
number=atoi(num);
switch(str[1]){
case '1':
printf("%.1f\n",F1(number));
break;
case '2':
printf("%d\n",F2(number));
break;
case '3':
printf("%d\n",F3(number));
break;
case '4':
printf("%d\n",F4(number));
break;
default:
break;
}
}
float F1(int x)//F1函数
{
float sum=0;
int i=1;
while(i<=x)
{
sum=sum+1/i;
i=i+2;
i=i*(-1);
}
return sum;
}
int F2(int x)//F2函数
{
int sum=0;
while(x>0)
{
sum=sum+jc(x);
x--;
}
return sum;
}
int F3(int x)//F3函数
{
int sum=0;
while(x>0)
{
sum=sum+x*10+x;
x--;
}
return sum;
}
int F4(int x)//F4函数
{
int sum=0;
int num1=1;
int num2=1;
int num3=1;
if(x==0)
return 0;
else if(x==1)
return 2;
else
while((num1=num3+num2)<=x)
{
sum=num1+sum;
num3=num2;
num2=num1;
}
return sum+2;
}
int jc(int x)
{
int sum=1;
while(x>0)
{
sum=sum*x;
x--;
}
return sum;
}本回答被提问者采纳
相似回答