C++课程设计设计菜单选择程序Word文档下载推荐.docx
- 文档编号:3661285
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:24
- 大小:93.59KB
C++课程设计设计菜单选择程序Word文档下载推荐.docx
《C++课程设计设计菜单选择程序Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C++课程设计设计菜单选择程序Word文档下载推荐.docx(24页珍藏版)》请在冰点文库上搜索。
}
/////////////////菜单选项函数//////////////////
voidmenu()
cout<
\n\t\t\t-----------菜单选择------------"
\t\t\t1.利用克莱姆法则求解线性方程组"
\t\t\t2.统计一篇英文文章的单词数"
\t\t\t3.退出程序"
\t\t\t-------------------------------"
////////////利用克莱姆法则求解线性方程组/////////////
staticinta[N][N],b[N];
intdi[N],c[N];
doublex[N];
intterm(intn,intk[])
intp,q,t=1;
for(p=1;
p<
n;
p++)
for(q=0;
q<
p;
q++)
if(k[q]>
k[p])
t=-t;
for(p=0;
p<
p++)
t*=a[p][k[p]];
return(t);
}
intdet(intn)
{
intj0,j1,j2,j3,j4,j5,d=0,k[N];
for(j0=0;
j0<
j0++)
if(a[0][j0]==0)continue;
k[0]=j0;
for(j1=0;
j1<
j1++)
if(j1==j0)continue;
if(a[1][j1]==0)continue;
k[1]=j1;
if(n==2)
d+=term(n,k);
for(j2=0;
j2<
j2++)
{
if(j2==j0)continue;
if(j2==j1)continue;
if(a[2][j2]==0)continue;
k[2]=j2;
if(n==3)
d+=term(n,k);
for(j3=0;
j3<
j3++)
{
if(j3==j0)continue;
if(j3==j1)continue;
if(j3==j2)continue;
if(a[3][j3]==0)continue;
k[3]=j3;
if(n==4)
d+=term(n,k);
for(j4=0;
j4<
j4++)
{
if(j4==j0)continue;
if(j4==j1)continue;
if(j4==j2)continue;
if(j4==j3)continue;
if(a[4][j4]==0)continue;
k[4]=j4;
if(n==5)
d+=term(n,k);
for(j5=0;
j5<
j5++)
{
if(j5==j0)continue;
if(j5==j1)continue;
if(j5==j2)continue;
if(j5==j3)continue;
if(j5==j4)continue;
if(a[5][j5]==0)continue;
k[5]=j5;
}
}
}
}
return(d);
voidequation()
inti,j,n,d;
charch;
A:
cout<
请输入线性方程组的未知数个数(n<
=6)n="
请输入线性方程组的增广矩阵(即未知数的系数与常数项组合成的矩阵,为n*(n+1)阶矩阵):
for(i=0;
i<
i++)//增广矩阵的输入
for(j=0;
j<
j++)
cin>
a[i][j];
cin>
b[i];
d=det(n);
for(j=0;
for(i=0;
i++)
c[i]=a[i][j];
a[i][j]=b[i];
di[j]=det(n);
for(i=0;
a[i][j]=c[i];
最后求得线性方程组的解为:
x[i]=(di[i])/d;
x("
i+1<
)="
x[i]<
B:
您是否要继续(Y/N)?
ch;
if(ch=='
y'
||ch=='
Y'
)
gotoA;
elseif(ch=='
n'
N'
gotoC;
else
gotoB;
C:
system("
pause"
);
/////////统计英文文章的单词数////////////////
voidenglish()
charstr[N],c;
inti,word=0,num=0;
\n请输入需要统计单词数的英文文章:
getchar();
/*输入英文文章*/
gets(str);
for(i=0;
(c=str[i])!
='
\0'
{
if((c>
0&
&
c<
65)||(c>
90&
97)||c>
122&
255)word=0;
/*用空格区分新单词的产生*/
if(word==0)
{
word=1;
/*新单词产生*/
num++;
}
这篇文章共有"
num<
个单词."
四、测试用例及测试结果
1.解线性方程组:
2.统计英文文章的单词数:
五、程序不足及升级方向
这个程序只能解未知数的个数n<
=6时的恰定方程组,实用性受到限制,还需要以后再完善。
六、参考文献
[1]姚全珠.C++面向对象程序设计[M].北京:
电子工业出版社,2010.
[2]郑莉.C++语言程序设计[M].北京:
清华大学出版社,2007.
职工信息表设计
报告2
1、类的结构:
这里把worker作为基类,由它派生类list和simplelist。
2、多态性:
将worker的display()成员函数设计为虚函数,printer()函数使用基类worker对象的引用作为参数,即可实现多态性。
3、设计主函数:
要求编写最多输入10000个职工的信息表,并且可以随时停止。
运用循环,增强程序的灵活性。
#defineMAX10000
classworker//信息表基类
public:
stringnum;
stringname;
charsex;
//性别用F(女)和M(男)表示。
intage;
virtualvoiddisplay(){}
};
classlist:
publicworker//完整信息表类
virtualvoiddisplay();
classsimplelist:
publicworker//信息简表类
intnemu();
//菜单选择函数
voidadd(lista[],int&
n);
//增加职工记录
floatcreat(listy[],simplelistx[],int&
//生成信息简表
floatprinter(worker*p,int&
//显示完整信息简表
/////////////////主函数的执行//////////////////
intmain()
simplelistc[MAX];
//定义简表数组
listd[MAX];
//定义信息表数组
intlastnum=0,t=1;
boolexit=false;
do
{
switch(nemu())
{
//1.增加职工记录
add(d,lastnum);
case2:
//2.显示原始记录
printer(d,lastnum);
cout<
endl<
返回主菜单!
case3:
//3.显示简表记录
creat(d,c,lastnum);
printer(c,lastnum);
case4:
//4.结束程序运行
exit=true;
while(exit==false);
\n程序结束!
\n"
return0;
/////////////菜单选择函数/////////////
intnemu()
intcn=5;
\t\t\t-----------------------------"
\t\t\t1.增加职工信息\n"
\t\t\t2.显示完整信息\n"
\t\t\t3.显示信息简表\n"
\t\t\t4.结束程序运行\n"
\n选择1-4:
"
cn;
while(cn<
1||cn>
4);
returncn;
//////////////显示职工信息的完整记录///////////////
voidlist:
:
display()
编号:
num<
姓名:
name<
性别:
sex<
年龄:
age<
//////////////显示信息简表////////////////
voidsimplelist:
///////////////1.增加职工信息//////////////
n)
您选择的是:
1.增加职工记录\n"
注意:
当编号为0时,返回主菜单:
for(n=0;
n<
MAX;
n++)//判断编号是否重复
输入编号:
a[n].num;
if(a[n].num=="
0"
//结束输入
for(intk=0;
k<
k++)//判断姓名是否重复
if(a[n].num==a[k].num)
cout<
输入编号重复!
}
输入姓名:
a[n].name;
for(k=0;
k++)
if(a[n].name==a[k].name)
输入姓名重复!
请输入性别(f为女,m为男):
a[n].sex;
if(a[n].sex!
f'
a[n].sex!
m'
)
性别输入错误"
请输入年龄:
a[n].age;
/////////////////2.生成信息简表//////////////////
if(n<
MAX)
for(inti=0;
=n;
i++)
x[i].name=y[i].name;
x[i].age=y[i].age;
return1;
}
else
return0;
////////////////3.信息输出函数//////////////////
for(inti=0;
********************"
(p+i)->
display();
1.增加职工信息
2.显示完整信息:
3.显示信息简表:
4.结束程序运行:
虽然这个程序的运行结果比较理想,但不是很美观,故有待完善。
有理数的四则运算
报告3
本程序中主要用到了一下这几个函数:
1、构造函数:
Rational(intx1=0,inty1=1){x=x1;
y=y1;
2、重载”+”、”-”、”*”、”/”四个运算符:
Rationaloperator+(Rationalr);
//重载加法运算符
Rationaloperator-(Rationalr);
//重载减法运算符
Rationaloperator*(Rationalr);
//重载乘法运算符
Rationaloperator/(Rationalr);
//重载除法运算符
3、重载流运算符:
friendistream&
operator>
(istream&
in,Rational&
r);
friendostream&
operator<
(ostream&
out,Rational&
输入输出就是按格式构造输出,输入流需要保证正确的格式,要保证分母不等于零。
#include<
classRational//有理数类
intx;
inty;
Rational(intx1=0,inty1=1){x=x1;
Rationaloperator+(Rationalr);
friendistream&
//重载输入运算符
friendostream&
//重载输出运算符
///////////主函数的执行/////////////
RationalA,B,C;
A:
请输入A的值"
A;
请输入B的值"
B;
--------------------\n"
C=A+B;
两数之和为A+B="
C<
C=A-B;
两数之差为A-B="
C=A*B;
两数之积为A*B="
C=A/B;
两数之商为A/B="
--------------------"
B:
if(ch=='
gotoA;
elseif(ch=='
gotoB;
C:
//////////////////////////////////////////////
istream&
r)
in>
r.x>
r.y;
if(r.y==0)
分母不能为0\n"
returnin;
ostream&
inti;
floatm,n;
if(r.x<
r.y)//当x<
y,且x,y有公约数时,进行约分
for(i=r.x;
i>
1;
i--)
if(r.x%i==0&
r.y%i==0)
m=r.x/i;
n=r.y/i;
r.x=m;
r.y=n;
else//当x>
=y,且x,y有公约数时,进行约分
for(i=r.y;
i--)
if(r.x%i==0&
out<
r.x<
/"
r.y<
//以分数的形式输出计算结果
returnout;
RationalRational:
operator+(Rationalr)
returnRational(x*r.y+y*r.x,y*r.y);
operator-(Rationalr)
returnRational(x*r.y-y*r.x,y*r.y);
operator*(Rationalr)
returnRational(x*r.x,y*r.y);
operator/(Rationalr)
returnRational(x*r.y,y*r.x);
本程序中还有一些不足的地方,比如,在分式与小数的转换方面,暂时还不能实现,所以,还需以后再加考虑,完善。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 课程设计 设计 菜单 选择 程序