课程设计——复数计算器
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
cout<<"输入不合法!"<<endl;
cout<<"请重新输入复数:";
goto A;
}
}
for(k=0;k<len;)
{
if(n!=0&&(s[k]=='-'||s[k]=='+'))
{
com.Real=sign*n;
n=Biblioteka Baidu;
}
if(s[k]=='-')
{
sign=-1;
k++;
}
if(s[k]=='+')
char Name[20]; //用户名
int nTest; //测试次数
double alAve; //平均成绩
int nAdd; //加法次数
int nSub; //减法次数
int nMul; //乘法次数
double dlScore[N];//用于分别存放前n次测试的总分数
2、用于计算的函数:
CComplex operator-=(CComplex &com);//减法赋值重载
CComplex operator*=(CComplex &com);//乘法赋值重载
CComplex operator++();//自加
CComplex operator--();//自减
double mod (void);//求复数的模
return *this;
}
double CComplex::mod()//求复数的模
{
return Real*Real+Image*Image;
}
int CComplex::operator>(CComplex &com)//比大
{
if(mod()>com.mod())
return 1;
else
return 0;
{
com.Real=n*sign;
}
return is;
}
ostream & operator<<(ostream &os,CComplex &com)//重载输出
{
if(fabs(com.Image)<1e-6)
os<<com.Real;
else if((fabs(com.Real)<1e-6))
{
while(cin.fail())
{
cout<<"输入有错!请重新输入:";
cin.clear();
cin.ignore(100,'\n');
cin>>f1;
}
}
void Text()//用户测试
{
system("cls");
cout<<"\t\t\t\t欢迎进入测试模式!\n\t\t\t本测试共5道题,每题20分,满分100分。"<<endl;
{
CComplex temp(Real+com.Real,Image+com.Image);
return temp;
}
CComplex CComplex::operator-(CComplex &com)//减法重载
{
CComplex temp(Real-com.Real,Image-com.Image);
CComplex operator*=(CComplex &com); //乘法赋值重载
CComplex operator++(); //自加
CComplex operator--(); //自减
double mod (void); //求复数的模
int operator>(CComplex &com);
FOREGROUND_BLUE);
char s[20];
A: is>>s;
int len=strlen(s);
int n=0,sign=1;
com.Image=com.Real=0;
for(int k=0;k<len;k++)
{
if((s[k]<'0'||s[k]>'9')&&(s[k]!='+'&&s[k]!='-'&&s[k]!='i'))
#include <windows.h>
#include <string.h>
#include <fstream.h>
#include <time.h>
#define N 10
class CComplex
{
private:
double Real,Image;
public:
CComplex(double real=0,double image =0) //构造函数
{
sign=1;k++;
}
if(s[k]=='i')
{
if(k!=len-1)
cout<<"复数数据格式错误"<<endl;
else
com.Image=sign*n;
break;
}
while(s[k]>='0'&&s[k]<='9')
{
n=n*10+s[k]-'0';
k++;
}
}
if(s[len-1]!='i'&&n!=0)
{
Real=real;Image=image;
}
friend istream & operator>>(istream &is,CComplex &com ); //重载输入
friend ostream & operator<<(ostream &os,CComplex &com); //重载输出
CComplex operator+(CComplex &com); //加法重载
}
int CComplex::operator<(CComplex &com)//比小
{
if(mod()<com.mod())
return 1;
else
return 0;
}
int CComplex::operator!=(CComplex &com)//判断不等
{
if(Real!=com.Real||Image!=com.Image)
2.2
1、定义类CComplex和User
(1)、其中类CComplex中包括:
数据成员:
Real,//复数实部
Image;//复数虚部
成员函数:
friend istream & operator>>(istream &is,CComplex &com ); //重载输入
friend ostream & operator<<(ostream &os,CComplex &com); //重载输出
return temp;
}
CComplex CComplex::operator*(CComplex &com)//乘法重载
{
CComplex temp(Real*com.Real-Image*com.Image,Real*com.Image+Image*com.Real);
return temp;
return 1;
else
return 0;
}
int CComplex::operator==(CComplex &com)//判断相等
{
if(Real==com.Real&&Image==com.Image)
return 1;
else
return 0;
}
void Clear(int &f1)//输入错误是清空输入流
int nAdd; //加法次数
int nSub; //减法次数
int nMul; //乘法次数
double dlScore[N];
}user;
istream & operator>>(istream &is,CComplex &com )//重载输入
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_GREEN | FOREGROUND_INTENSITY |
}
CComplex CComplex::operator+=(CComplex &com)//加法赋值重载
{
Real+=com.Real;
Image+=com.Image;
return *this;
}
CComplex CComplex::operator-=(CComplex &com) //减法赋值重载
int i,score=0,x,e=1,f;
double real1,image1,real2,image2,real3,image3,real4,image4;
CComplex key,temp;
while(e)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_GREEN | FOREGROUND_RED);
Add()//加法计算
Sub()//减法计算
Mul()//乘法计算
Text()//用户测试
Add1()//加法赋值计算
Sub1()//减法赋值计算
Mul1()//乘法赋值计算
selfAdd()//自加计算
selfSub()//自减计算
Mod()//模的计算
Compare()//比较计算
3、文件操作函数
int operator<(CComplex &com);
int operator!=(CComplex &com);
int operator==(CComplex &com);
};
class User
{
public:
char Name[20]; //用户名
int nTest; //测试次数
double alAve; //平均成绩
int operator>(CComplex &com);//比大
int operator<(CComplex &com);//比小
int operator!=(CComplex &com);//不等
int operator==(CComplex &com);//相等
(2)、其中类User中包括:
数据成员:
Real=nReal;
Image=nImage;
return *this;
}
CComplex CComplex::operator++()//自加
{
++Real;
++Image;
return *this;
}
CComplex CComplex::operator--()//自减
{
--Real;
--Image;
测试,乘法要求为一位数的运算。
(4)设计记录功能,可以记录下不同用户使用计算器的情况,记录以文件的形式保存
在计算机内,开机时要求用户输入用户名,显示该名户以前的记录。用户记录用包括:做
了多少次加减法、乘法、进行测试的次数,后3次的测试平均分等,在退出计算器程序时
用心的用户记录代替原有的记录。
2
2.1
Write()文件写入
Read() //文件读取
4、其他函数
Menu() //菜单函数
Clear() //输入数据类型错误时,用以清空输入流
2.3 主要算法流程图
。。。。。。
图2-1算法流程图
3
#include <iostream.h>
#include <math.h>
#include <stdlib.h>
{
Real-=com.Real;
Image-=com.Image;
return *this;
}
CComplex CComplex::operator*=(CComplex &com)//乘法赋值重载
{
double nReal=Real*com.Real-Image*com.Image;
double nImage=Real*com.Image+Image*com.Real;
CComplex operator-(CComplex &com); //减法重载
CComplex operator*(CComplex &com); //乘法重载
CComplex operator+=(CComplex &com); //加法赋值重载
CComplex operator-=(CComplex &com); //减法赋值重载
内容及要求:
(1)所设计的复数计算器可以进行+ - * += -= *= ++ -- >= <= == !=运算符,其中>=
<=是针对复数的模进行运算。
(2)设计输入重载函数,要求能接收从键盘输入a+bi形式的复数,在程序中可以识出
实部虚部并正确赋值。
(3)设计计算器测试程序,对加减法进行测试,要求在两位数以内进行,对乘法进行
os<<com.Image<<"i";
else if(com.Image>0)
os<<com.Real<<"+"<<com.Image<<"i";
else
os<<com.Real<<com.Image<<"i";
return os;
}
CComplex CComplex::operator+(CComplex &com)//加法重载
CComplex operator+(CComplex &com);//加法重载
CComplex operator-(CComplex &com);//减法重载
CComplex operator*(CComplex &com);//乘法重载
CComplex operator+=(CComplex &com);//加法赋值重载
cout<<"输入不合法!"<<endl;
cout<<"请重新输入复数:";
goto A;
}
}
for(k=0;k<len;)
{
if(n!=0&&(s[k]=='-'||s[k]=='+'))
{
com.Real=sign*n;
n=Biblioteka Baidu;
}
if(s[k]=='-')
{
sign=-1;
k++;
}
if(s[k]=='+')
char Name[20]; //用户名
int nTest; //测试次数
double alAve; //平均成绩
int nAdd; //加法次数
int nSub; //减法次数
int nMul; //乘法次数
double dlScore[N];//用于分别存放前n次测试的总分数
2、用于计算的函数:
CComplex operator-=(CComplex &com);//减法赋值重载
CComplex operator*=(CComplex &com);//乘法赋值重载
CComplex operator++();//自加
CComplex operator--();//自减
double mod (void);//求复数的模
return *this;
}
double CComplex::mod()//求复数的模
{
return Real*Real+Image*Image;
}
int CComplex::operator>(CComplex &com)//比大
{
if(mod()>com.mod())
return 1;
else
return 0;
{
com.Real=n*sign;
}
return is;
}
ostream & operator<<(ostream &os,CComplex &com)//重载输出
{
if(fabs(com.Image)<1e-6)
os<<com.Real;
else if((fabs(com.Real)<1e-6))
{
while(cin.fail())
{
cout<<"输入有错!请重新输入:";
cin.clear();
cin.ignore(100,'\n');
cin>>f1;
}
}
void Text()//用户测试
{
system("cls");
cout<<"\t\t\t\t欢迎进入测试模式!\n\t\t\t本测试共5道题,每题20分,满分100分。"<<endl;
{
CComplex temp(Real+com.Real,Image+com.Image);
return temp;
}
CComplex CComplex::operator-(CComplex &com)//减法重载
{
CComplex temp(Real-com.Real,Image-com.Image);
CComplex operator*=(CComplex &com); //乘法赋值重载
CComplex operator++(); //自加
CComplex operator--(); //自减
double mod (void); //求复数的模
int operator>(CComplex &com);
FOREGROUND_BLUE);
char s[20];
A: is>>s;
int len=strlen(s);
int n=0,sign=1;
com.Image=com.Real=0;
for(int k=0;k<len;k++)
{
if((s[k]<'0'||s[k]>'9')&&(s[k]!='+'&&s[k]!='-'&&s[k]!='i'))
#include <windows.h>
#include <string.h>
#include <fstream.h>
#include <time.h>
#define N 10
class CComplex
{
private:
double Real,Image;
public:
CComplex(double real=0,double image =0) //构造函数
{
sign=1;k++;
}
if(s[k]=='i')
{
if(k!=len-1)
cout<<"复数数据格式错误"<<endl;
else
com.Image=sign*n;
break;
}
while(s[k]>='0'&&s[k]<='9')
{
n=n*10+s[k]-'0';
k++;
}
}
if(s[len-1]!='i'&&n!=0)
{
Real=real;Image=image;
}
friend istream & operator>>(istream &is,CComplex &com ); //重载输入
friend ostream & operator<<(ostream &os,CComplex &com); //重载输出
CComplex operator+(CComplex &com); //加法重载
}
int CComplex::operator<(CComplex &com)//比小
{
if(mod()<com.mod())
return 1;
else
return 0;
}
int CComplex::operator!=(CComplex &com)//判断不等
{
if(Real!=com.Real||Image!=com.Image)
2.2
1、定义类CComplex和User
(1)、其中类CComplex中包括:
数据成员:
Real,//复数实部
Image;//复数虚部
成员函数:
friend istream & operator>>(istream &is,CComplex &com ); //重载输入
friend ostream & operator<<(ostream &os,CComplex &com); //重载输出
return temp;
}
CComplex CComplex::operator*(CComplex &com)//乘法重载
{
CComplex temp(Real*com.Real-Image*com.Image,Real*com.Image+Image*com.Real);
return temp;
return 1;
else
return 0;
}
int CComplex::operator==(CComplex &com)//判断相等
{
if(Real==com.Real&&Image==com.Image)
return 1;
else
return 0;
}
void Clear(int &f1)//输入错误是清空输入流
int nAdd; //加法次数
int nSub; //减法次数
int nMul; //乘法次数
double dlScore[N];
}user;
istream & operator>>(istream &is,CComplex &com )//重载输入
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_GREEN | FOREGROUND_INTENSITY |
}
CComplex CComplex::operator+=(CComplex &com)//加法赋值重载
{
Real+=com.Real;
Image+=com.Image;
return *this;
}
CComplex CComplex::operator-=(CComplex &com) //减法赋值重载
int i,score=0,x,e=1,f;
double real1,image1,real2,image2,real3,image3,real4,image4;
CComplex key,temp;
while(e)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_GREEN | FOREGROUND_RED);
Add()//加法计算
Sub()//减法计算
Mul()//乘法计算
Text()//用户测试
Add1()//加法赋值计算
Sub1()//减法赋值计算
Mul1()//乘法赋值计算
selfAdd()//自加计算
selfSub()//自减计算
Mod()//模的计算
Compare()//比较计算
3、文件操作函数
int operator<(CComplex &com);
int operator!=(CComplex &com);
int operator==(CComplex &com);
};
class User
{
public:
char Name[20]; //用户名
int nTest; //测试次数
double alAve; //平均成绩
int operator>(CComplex &com);//比大
int operator<(CComplex &com);//比小
int operator!=(CComplex &com);//不等
int operator==(CComplex &com);//相等
(2)、其中类User中包括:
数据成员:
Real=nReal;
Image=nImage;
return *this;
}
CComplex CComplex::operator++()//自加
{
++Real;
++Image;
return *this;
}
CComplex CComplex::operator--()//自减
{
--Real;
--Image;
测试,乘法要求为一位数的运算。
(4)设计记录功能,可以记录下不同用户使用计算器的情况,记录以文件的形式保存
在计算机内,开机时要求用户输入用户名,显示该名户以前的记录。用户记录用包括:做
了多少次加减法、乘法、进行测试的次数,后3次的测试平均分等,在退出计算器程序时
用心的用户记录代替原有的记录。
2
2.1
Write()文件写入
Read() //文件读取
4、其他函数
Menu() //菜单函数
Clear() //输入数据类型错误时,用以清空输入流
2.3 主要算法流程图
。。。。。。
图2-1算法流程图
3
#include <iostream.h>
#include <math.h>
#include <stdlib.h>
{
Real-=com.Real;
Image-=com.Image;
return *this;
}
CComplex CComplex::operator*=(CComplex &com)//乘法赋值重载
{
double nReal=Real*com.Real-Image*com.Image;
double nImage=Real*com.Image+Image*com.Real;
CComplex operator-(CComplex &com); //减法重载
CComplex operator*(CComplex &com); //乘法重载
CComplex operator+=(CComplex &com); //加法赋值重载
CComplex operator-=(CComplex &com); //减法赋值重载
内容及要求:
(1)所设计的复数计算器可以进行+ - * += -= *= ++ -- >= <= == !=运算符,其中>=
<=是针对复数的模进行运算。
(2)设计输入重载函数,要求能接收从键盘输入a+bi形式的复数,在程序中可以识出
实部虚部并正确赋值。
(3)设计计算器测试程序,对加减法进行测试,要求在两位数以内进行,对乘法进行
os<<com.Image<<"i";
else if(com.Image>0)
os<<com.Real<<"+"<<com.Image<<"i";
else
os<<com.Real<<com.Image<<"i";
return os;
}
CComplex CComplex::operator+(CComplex &com)//加法重载
CComplex operator+(CComplex &com);//加法重载
CComplex operator-(CComplex &com);//减法重载
CComplex operator*(CComplex &com);//乘法重载
CComplex operator+=(CComplex &com);//加法赋值重载