C++作业6.docx
《C++作业6.docx》由会员分享,可在线阅读,更多相关《C++作业6.docx(14页珍藏版)》请在冰豆网上搜索。
C++作业6
1、构建一个复数Complex类,其包含realPart实部和imaginaryPart虚部,提供构造函数可以初始化复数,同时提供实现复数加、复数减、复数乘和复数除的成员函数,并能将相应结果显示出来。
测试你所设计的复数类。
Complex.h
#include
usingstd:
:
cout;
usingstd:
:
cin;
usingstd:
:
endl;
classComplex
{
public:
Complex(double,double,double,double);
voidcomplexAdd();//加
voidcomplexSub();//减
voidcomplexMul();//乘
voidcomplexDiv();//除
private:
doublerealPart1,realPart2;//记录实部
doubleimaginaryPart1,imaginaryPart2;//记录虚部
};
Complex.cpp
#include
usingstd:
:
cout;
usingstd:
:
cin;
usingstd:
:
endl;
#include
usingstd:
:
setprecision;
#include"Complex.h"
Complex:
:
Complex(doubler1,doublei1,doubler2,doublei2)//将私有数据结构成员初始化
{
realPart1=r1;
realPart2=r2;
imaginaryPart1=i1;
imaginaryPart2=i2;
}
voidComplex:
:
complexAdd()
{
/*实部与实部相加,虚部与虚部相加
cout<<"("<<<"+"<<"("<<<"="<//将上述代码格式稍作调整,在负数外面加括号
cout<<"("<if(imaginaryPart1<0)
cout<<"("<else
cout<cout<<")+(";
if(realPart2<0)
cout<<"("<else
cout<if(imaginaryPart2<0)
cout<<"("<else
cout<cout<<")="<if(imaginaryPart1+imaginaryPart2<0)
cout<<"("<else
cout<}
voidComplex:
:
complexSub()
{
/*实部与实部相减,虚部与虚部相减
cout<<"("<<<")-("<<<")="<//将上述代码格式稍作调整,在负数外加上括号
cout<<"("<if(imaginaryPart1<0)
cout<<"("<else
cout<cout<<")-(";
if(realPart2<0)
cout<<"("<else
cout<if(imaginaryPart2<0)
cout<<"("<else
cout<cout<<")="<if(imaginaryPart1-imaginaryPart2<0)
cout<<"("<else
cout<}
voidComplex:
:
complexMul()
{
/*二项式乘法
cout<<"("<<<"*"<<"("<<<"="<<<"+"<//将上述代码格式稍作调整,在负数前加上括号
cout<<"("<if(imaginaryPart1<0)
cout<<"("<else
cout<cout<<")*("<if(imaginaryPart2<0)
cout<<"("<else
cout<cout<<")="<if(realPart1*imaginaryPart2+realPart2*imaginaryPart1<0)
cout<<"("<else
cout<}
voidComplex:
:
complexDiv()
{
if(realPart2==0&&imaginaryPart2==0)
{
cout<<"分母不能为0!
"<return;
}
/*乘以除数的共轭复数
cout<<"("<<<"/"<<"("<<<"="<<(realPart1*realPart2+imaginaryPart1*imaginaryPart2)/(realPart2*realPart2+imaginaryPart2*imaginaryPart2)
<<"+"<<(-realPart1*imaginaryPart2+realPart2*imaginaryPart1)/(realPart2*realPart2+imaginaryPart2*imaginaryPart2)<<"i"<//将上述格式稍作调整,在负数外面加括号
cout<<"("<if(imaginaryPart1<0)
cout<<"("<else
cout<cout<<")/("<if(imaginaryPart2<0)
cout<<"("<else
cout<cout<<")="<(2)<<(realPart1*realPart2+imaginaryPart1*imaginaryPart2)/(realPart2*realPart2+imaginaryPart2*imaginaryPart2)
<<"+";
if(-realPart1*imaginaryPart2+realPart2*imaginaryPart1<0)
cout<<"("<(2)<<(-realPart1*imaginaryPart2+realPart2*imaginaryPart1)/(realPart2*realPart2+imaginaryPart2*imaginaryPart2)<<")"<<"i"<else
cout<(2)<<(-realPart1*imaginaryPart2+realPart2*imaginaryPart1)/(realPart2*realPart2+imaginaryPart2*imaginaryPart2)<<"i"<}
test_Complex.cpp
#include
usingstd:
:
cout;
usingstd:
:
cin;
usingstd:
:
endl;
#include"Complex.h"
intmain()
{
doubler1,r2,i1,i2;
cout<<"请输入第一个复数的实部和虚部:
"<cin>>r1>>i1;
cout<<"请输入第二个复数的实部和虚部:
"<cin>>r2>>i2;
ComplexC(r1,i1,r2,i2);
C.complexAdd();
C.complexSub();
C.complexMul();
C.complexDiv();
return0;
}
2、对本讲中的Time类,为其增加一个tick成员函数,其作用是将存放在Time对象中的时间递增1秒。
应确保你的Time对象始终处于可靠状态。
编写测试函数,测试你所修改后的Time类。
特别留意:
Ø递增到下一分
Ø递增到下一小时
Ø递增到下一天
Time.h
//DeclarationofclassTime.
//MemberfunctionsaredefinedinTime.cpp
//preventmultipleinclusionsofheaderfile
#ifndefTIME_H
#defineTIME_H
//Timeclassdefinition
classTime
{
public:
Time();//constructor
voidsetTime(int,int,int);//sethour,minuteandsecond
voidprintUniversal();//printtimeinuniversal-timeformat
voidprintStandard();//printtimeinstandard-timeformat
voidtick(int);
private:
inthour;//0-23(24-hourclockformat)
intminute;//0-59
intsecond;//0-59
};//endclassTime
#endif
Time.cpp
//Member-functiondefinitionsforclassTime.
#include
usingstd:
:
cout;
#include
usingstd:
:
setfill;
usingstd:
:
setw;
#include"Time.h"//includedefinitionofclassTimefromTime.h
//Timeconstructorinitializeseachdatamembertozero.
//EnsuresallTimeobjectsstartinaconsistentstate.
Time:
:
Time()
{
hour=minute=second=0;
}//endTimeconstructor
//setnewTimevalueusinguniversaltime;ensurethat
//thedataremainsconsistentbysettinginvalidvaluestozero
voidTime:
:
setTime(inth,intm,ints)
{
hour=h;//validatehour
minute=m;//validateminute
second=s;//validatesecond
}//endfunctionsetTime
//printTimeinuniversal-timeformat(HH:
MM:
SS)
voidTime:
:
printUniversal()
{
cout<(2)<"
<(2)<"<(2)<}//endfunctionprintUniversal
//printTimeinstandard-timeformat(HH:
MM:
SSAMorPM)
voidTime:
:
printStandard()
{
cout<<((hour==0||hour==12)?
12:
hour%12)<<":
"
<(2)<"<(2)
<"AM":
"PM");
}//endfunctionprintStandard
voidTime:
:
tick(intt)//将增加的秒数加到此刻的时间上
{
second=second+t;
if(second>=60)
{
minute=minute+second/60;
second=second%60;
}
if(minute>=60)
{
hour=hour+minute/60;
minute=minute%60;
}
if(hour>=24)
{
cout<<"\nwelcometoanotherday!
";
hour=hour%24;
}
if(second<0)
{
minute=minute+second/60-1;
second=second%60+60;
}
if(minute<0)
{
hour=hour+minute/60-1;
minute=minute%60+60;
}
if(hour<0)
{
cout<<"\nwelcometoyesterday!
";
hour=hour%24+24;
}
}
test_Time.cpp
//ProgramtotestclassTime.
//NOTE:
ThisfilemustbecompiledwithTime.cpp.
#include
usingstd:
:
cin;
usingstd:
:
cout;
usingstd:
:
endl;
#include"Time.h"//includedefinitionofclassTimefromTime.h
intmain()
{
Timet;//instantiateobjecttofclassTime
//outputTimeobjectt'sinitialvalues
cout<<"Theinitialuniversaltimeis";
t.printUniversal();//
cout<<"\nTheinitialstandardtimeis";
t.printStandard();//
inthr=-1,min=-1,sec=-1,i;
while(hr<0||hr>=24||min<0||min>60||sec<0||sec>60)
{
cout<<"\n请输入现在的时间:
(24小时制)"<cout<<"请输入小时:
"<cin>>hr;
cout<<"请输入分钟:
"<cin>>min;
cout<<"请输入秒钟:
"<cin>>sec;
}
t.setTime(hr,min,sec);//changetime
//outputTimeobjectt'snewvalues
cout<<"\n\nUniversaltimeaftersetTimeis";
t.printUniversal();//
cout<<"\nStandardtimeaftersetTimeis";
t.printStandard();
cout<cout<<"\n请输入你想增加的秒数:
"<cin>>i;
t.tick(i);
//outputTimeobjectt'snewvalues
cout<<"\n\nUniversaltimeafterTimetickis";
t.printUniversal();//
cout<<"\nStandardtimeafterTimetickis";
t.printStandard();
cout<return0;
}//endmain