课程设计——复数计算器
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)//输入错误是清空输入流
{
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)
Write()文件写入
Read() //文件读取
4、其他函数
Menu() //菜单函数
Clear() //输入数据类型错误时,用以清空输入流
2.3 主要算法流程图
。。。。。。
图2-1算法流程图
3
#include <iostream.h>
#include <math.h>
#include <stdlib.h>
CComplex operator+(CComplex &com);//加法重载
CComplex operator-(CComplex &com);//减法重载
CComplex operator*(CComplex &com);//乘法重载
CComplex operator+=(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;
Add()//加法计算
Sub()//减法计算
Mul()//乘法计算
Text()//用户测试
Add1()//加法赋值计算
Sub1()//减法赋值计算
Mul1()//乘法赋值计算
selfAdd()//自加计算
selfSub()//自减计算
Mod()//模的计算
Compare()//比较计算
3、文件操作函数
{
CComplex temp(Real+com.Real,Image+com.Image);
return temp;
}
CComplex CComplex::operator-(CComplex &com)//减法重载
{
CComplex temp(Real-com.Real,Image-com.Image);
{
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;
#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) //构造函数
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 |
return *this;
}
double CComplex::mod()//求复数的模
{
return Real*Real+Image*Image;
}
int CComplex::operator>(CComplex &com)//比大
{
if(mod()>com.mod())
return 1;
else
return 0;
{
Real=real;Image=image;
}
friend istream & operator>>(istream &is,CComplex &com ); //重载输入
friend ostream & operator<<(ostream &os,CComplex &com); //重载输出
CComplex operator+(CComplex &com); //加法重载
内容及要求:
(1)所设计的复数计算器可以进行+ - * += -= *= ++ -- >= <= == !=运算符,其中>=
<=是针对复数的模进行运算。
(2)设计输入重载函数,要求能接收从键盘输入a+bi形式的复数,在程序中可以识出
实部虚部并正确赋值。
(3)设计计算器测试程序,对加减法进行测试,要求在两位数以内进行,对乘法进行
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);
测试,乘法要求为一位数的运算。
(4)设计记录功能,可以记录下不同用户使用计算器的情况,记录以文件的形式保存
在计算机内,开机时要求用户输入用户名,显示该名户以前的记录。用户记录用包括:做
了多少次加减法、乘法、进行测试的次数,后3次的测试平均分等,在退出计算器程序时
用心的用户记录代替原有的记录。
2
2.1
{
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 operator-(CComplex &com); //减法重载
CComplex operator*(CComplex &com); //乘法重载
CComplex operator+=(CComplex &com); //加法赋值重载
CComplex operator-=(CComplex &com); //减法赋值重载
{
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))
int operator<(CComplex &com);
int operator!=(CComplex &com);
int operator==(CComplex &com);
};
class User
{
public:
char Name[20]; //用户名
int nTest; //测试次数
double alAve; //平均成绩
CComplex operator*=(CComplex &com); //乘法赋值重载