一元多项式加减乘运算迷宫求解校园导游咨询跳舞配对表达式求值源代码_第1页
一元多项式加减乘运算迷宫求解校园导游咨询跳舞配对表达式求值源代码_第2页
一元多项式加减乘运算迷宫求解校园导游咨询跳舞配对表达式求值源代码_第3页
一元多项式加减乘运算迷宫求解校园导游咨询跳舞配对表达式求值源代码_第4页
一元多项式加减乘运算迷宫求解校园导游咨询跳舞配对表达式求值源代码_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

注:下列程序本人确保一定对的,有一部分是我在网上找到的,并不全是本人实的好孩纸,绝对不骗人财富值,相信我吧,这些程序你值得拥有。typedefstructfloatcoef;intexpn;//指数值structnode*next;voidstart()//{printf("两个一元多项式的相加,相减,相乘:\n");printf("请选择操作printf("0.退出printf("3.两个一元多项式相减}voidinsert(PLOY*head,PLOY*inpt)//{PLOY*pre,*now;intsignal=0;pre=head;//pre定义为现在的前一种链节if(pre->next==NULL){pre->next=inpt;}{{if(inpt->expn<now->expn)//{if(now-{}{}}if(inpt-{}{free(inpt);{}}}}}PLOY*creat(charch)//{PLOY*head,*inpt;floatx;inthead=(PLOY*)malloc(sizeof(PLOY));printf("请输入一元多项式%c:(00~)\n",ch);scanf("%f%d",&x,&y);{inpt=(PLOY*)malloc(sizeof(PLOY));insert(head,inpt);//否则就查找位置并且插入新链节printf("请输入一元多项式%c的下一项:(以00~)\n",ch);scanf("%f%d",&x,&y);}return}PLOY*minuscreat(charch)//{PLOY*head,*inpt;floatx;inthead=(PLOY*)malloc(sizeof(PLOY));printf("请输入一元多项式%c:(00~)\n",ch);scanf("%f%d",&x,&y);{inpt=(PLOY*)malloc(sizeof(PLOY));insert(head,inpt);//否则就查找位置并且插入新链节printf("请输入一元多项式%c的下一项:(以00~)\n",ch);scanf("%f%d",&x,&y);}return}PLOY*addPLOY(PLOY*head,PLOY*pre)//PLOY*inpt;intflag=0;{if(pre-flag=1;{pre=pre-inpt=(PLOY*)malloc(sizeof(PLOY));}//否则把目前"g(x)"的链节插入到"F=(x)"}return}PLOY*byPLOY(PLOY*head1,PLOY*head2)//PLOY*inpt,*res,*pre;intres=(PLOY*)malloc(sizeof(PLOY));head1=head1-{if(pre-{pre=head2;}{flag=1;}pre=pre-inpt=(PLOY*)malloc(sizeof(PLOY));insert(res,inpt);//把目前"g(x)"的链节插入到"F=(x)"}return}voidprint(PLOY*fun)//{PLOY*printing;intflag=0;printing=fun->next;//正在被打印的链节if(fun->next==NULL)//如果函数为空打印{}{printf("+");//为正数时打印"+"号if(printing->coef==1);"1"就不用打印系数了elseif(printing->coef==-1)printf("1"就打印"-"号就行了printf("%f",printing->coef);if(printing->expn!=0)printf("x^%d",printing->expn);//如果指数为"0"elseif((printing->coef==1)||(printing->coef==-1))if(printing-flag=1;printing=printing-}}voidminusprint(PLOY*fun)//{PLOY*printing;intflag=0;printing=fun->next;//正在被打印的链节if(fun->next==NULL)//如果函数为空打印{}{printf("-");//为正数时打印"-"号if(printing->coef==-1);1"就不用打印系数了elseif(printing->coef==1)printf(""1"就打印"-"号就行了printf("+%f",-printing->coef);if(printing->expn!=0)>expn);//如果指数为"0"elseif((printing->coef==1)||(printing->coef==-1))if(printing-flag=1;printing=printing-}}void{PLOYintsign=-1;{{case0:break;case1:{f=creat('f');//输入多项式f(x)g=creat('g');g(x)f=addPLOY(f,g);sign=-1;//复位标志start();}case{f=creat('f');//输入多项式f(x)g=creat('g');g(x)f=byPLOY(f,g);sign=-1;//复位标志start();}case{f=creat('f');//输入多项式f(x)g=minuscreat('g');g(x)f=addPLOY(f,g);sign=-1;//复位标志start();}{}}}}迷宫求解(建.cpp以一种m*n的长方形矩阵表达迷宫,0和1有#include<stdio.h>#include<stdlib.h>#defineM15#defineN15structmarkintx;intstructElement{intx,y;//x行,yintd;//dtypedefstructLStack{ElementstructLStackintInitStack(PLStack&S)//构造空栈return}intStackEmpty(PLStackS)//return1;return0;intPush(PLStack&S,Elemente)//PLStackp;p-return}intPop(PLStack&S,Element&e)PLStackp;{return1;}return0;}/***************求迷宫途径函数voidMazePath(structmarkstart,structmarkend,intmaze[M][N],int{inti,j,d;inta,b;Elementelem,e;PLStackS1,S2;maze[start.x][start.y]=2;elem.d=-1;1while(!StackEmpty(S1)){d=elem.d+1;//下一种方向while(d<4){if(a==end.x&&b==end.y&&maze[a][b]==0){elem.d=886;//方向输出为-1printf("\n0=1=2=3=886为则走出迷宫\n\n通路while(S1)}printf("--}return;break,但发现出错,exit又会}if(maze[a][b]==0){maze[a][b]=2;Push(S1,elem);i=a;//下一点转化为目前点d=-}}printf("没有找到能够走出此迷宫的途径\n");voidinitmaze(intmaze[M][N]){intintm,n;printf("m=");printf("n=");printf("\n请输入迷宫的各行各列:\n用空格隔开,0代表路,1for(i=0;i<=m+1;i++){}{}for(i=0;i<=m+1;i++){printf("%d",maze[i][j]);}}void{intstructmarkstart,end;//start,end入口和出口的坐标intadd[4][2]={{0,1},{1,0},{0,-1},{-initmaze(sto);//MazePath(start,end,sto,add);//findpath求迷宫途径//从程序里调用“pause”命令,在命令行上输出一行类似于“Pressanykeytoexit”的字,等待顾客按一种键,然后返回}3)#defineINFINITY10000/*无穷大*/#defineMAX_VERTEX_NUM40#defineMAX40typedefstructArCell{intadj;typedefstructcharname[30];intcharintroduction[100];//typedefstruct{infotypevexs[MAX_VERTEX_NUM];AdjMatrixarcs;intMGraphb;voidcmd();MGraphInitGraph();voidMenu();voidBrowser(MGraphvoidShortestPath_DIJ(MGraph*G);voidFloyd(MGraph*G);voidSearch(MGraph*G);intLocateVex(MGraph*G,char*v);MGraph*CreatUDN(MGraph*G);voidprint(MGraph*G);voidmain(){system("colorsystem("modecon:cols=140lines=130");}voidcmd(){inti;{{casecase2:system("cls");ShortestPath_DIJ(&b);Menu();break;case3:system("cls");Floyd(&b);Menu();break;case4:system("cls");Search(&b);Menu();break;case5:exit(1);break;}}}MGraph{MGraphG;inti,j;strcpy(G.vexs[2].introduction,"strcpy(G.vexs[3].name,"strcpy(G.vexs[3].introduction,"strcpy(G.vexs[9].introduction,"returnG;}//InitGraphendvoidMenu(){printf("\n\n");printf("??????????????????????\n");printf("?1.浏览校园全景printf("?2.查看全部游览路线printf("3.选择出发点和目的地,显示一条最短途径?\n");printf("?4.查看景点信息?\n");printf("?5.退出系统?\n");printf("??????????????????????\n");printf("}voidBrowser(MGraph{intv;printf("?for(v=0;v<G-printf("?%-4d?%-16s?%-58s?\n",G->vexs[v].num,G-printf("\n");printf("?\n");printf("printf("18\n");printf("??????????????????\n");printf("printf("printf("\n");printf("?\n");printf("printf("\n");printf("?\n");printf("printf("西区超市???11号教学楼????????????荷花池}//迪杰斯特拉算法来计算出起点到各个顶点之间的最短途径,v0voidShortestPath_DIJ(MGraph*G){intv,w,i,min,t=0,x,flag=1,v0;intfinal[20],D[20],p[20][20];{if(v0<0||v0>G-{}}for(v=0;v<G-{{}}{}}for(v=0;v<G-{if(v0!=v)printf("%s",G->vexs[v0].name);{if(p[v][w]&&w!=v0)printf("-->%s",G->vexs[w].name);}if(t>G->vexnum-1&&v0!=v)printf("总路线长}}//ShortestPath_DIJendvoidFloyd(MGraph*G){intv,u,i,w,k,j,flag=1,p[10][10][10],D[10][10];for(w=0;w<G-{{}}for(w=0;w<G-}{if(k<0||k>G->vexnum||j<0||j>G-{}}printf("-->%s",G-printf("-->%s",G-printf("总路线长}//FloydvoidSearch(MGraph{intk,flag=1;{if(k<0||k>G-{}printf("?printf("?%-4d?%-16s?%-56s?\n",G->vexs[k].num,G-}//SearchintLocateVex(MGraph*G,char*v)intc=-returnc;}MGraph*CreatUDN(MGraph*G)//{intchar{printf("scanf("%d",&G->vexs-scanf("%s",G->vexs-}for(j=0;j<G-{printf("第%d条边printf("{G-G->arcs[j][i]=G-}}return}voidprint(MGraph{intfor(v=0;v<G-for(w=0;w<G-{printf("?");elseprintf("%-7d",G->arcs[v][w].adj);}}一共有m个女生,有n个男生(且m?n),现要开一种舞会,男女分别编号坐在舞下:#definequeuesizetypedefstruct{charname[20];//定义一种长度为20charsex;char变量sex,用来表达性别,规定m表达男性,f表达女性}person_type;typedefstruct{person_type*qBase;intfront;intrear;voidinit_queue(cir_queue*q){q->qBase=(person_typeif(!q->qBase)//如果q->qBase为0则创立失败,退出程序{exit(-1);//立刻终止程序}q->front=q->rear=NULL;boolfull_queue(cir_queue*q)//为满返回true,否则返回if((q->rear+1)%queuesize==q->front)returntrue;return}boolempty_queue(cir_queue*q)//if(q->front==q->rear)returntrue;return}voiden_queue(cir_queue*q,person_typep)//进队函数,使p{}else{q->qBase[q-q->rear=(q->rear+1)%queuesize;}}person_typede_queue(cir_queue*q)//出队函数,用pperson_typep;if(empty_queue(q))//{}else{p=q->qBase[q-returnp;}}intlength_queue(cir_queue*q)//求循环队列元素个数{returnq->rear-q->frontperson_typequeue_front(cir_queue*q)//{}returnq->qBase[q->front];voiddancepartners(cir_queuefemaledancer,cir_queuemaledancer,intlun)//舞伴配对函数{intmlength_queue(&femaledancer);intn=length_queue(&maledancer);//计算男队人数for(intj=1;j<=lun;++j)//forif(m>n)//{person_typep;person_typeq;person_type printf("第%d轮配对状况for(inti=1;i<=n;++i)//for{q=de_queue(&femaledancer);en_queue(&femaledancer,q);}printf("女队中第一种等待的是}elseif(m<n){person_typep;person_typeq;person_type for(inti=1;i<=m;++i){en_queue(&femaledancer,q);}printf("男队中第一种等待的是}else{person_typep;person_type for(inti=1;i<=m;++i){q=de_queue(&femaledancer);}printf("没有人剩余}}}intgac(intm,intw,intn)//求出与y号女生会在第nintx,z;{if(z>m)z=z-m;}elsex=(w*n-returnx;}void{person_typeinti,num,m,w;printf("输入编号和性别(用m表达男性,用f\n7\nm\n");{}cir_queuemaledancer,femaledancer;//定义两个循环队列构造体init_queue(&femaledancer);//调用init_queue()函数置空队列{p=dancers[i];//构造体整体赋值{}else//男的进队列{}}int{ printf("主菜单printf("1.输出每曲配对状况\n");printf("3.退出 printf("{case1:dancepartners(femaledancer,maledancer,n);break;case2:{int{{printf("他们会在第%d曲跳舞}}case}}}?运算符限定于加、减、乘、除四种运算,请验证体现式与否书写正当,如-*5#include<stdio.h>/*库文献包含*/#include<string.h>/*用于字符串操作*/#include<stdlib.h>/*用于exit函数*/intcheck(charchar*c:输入的字符串若没有,则返回1,intcheck(char{intk=0;{if((*c>='0'&&*c<='1000')||*c=='+'*c=='-'||*c=='*'||*c=='/'*c=='.'||*c=='('||*c==')'{}{printf("inputerror,therehavethecharnotthemathexpressionreturn0;//返回参数,0:}elseif(*c==')')}{printf("inputerror,thereisnothavecorrectbracket'()'!\n");return0;//返回参数,0:字符串中有不符合规定的字符}return1;//返回参数,1:voidmove(char*f,double*s,intchar*f:运算符数组double*s:intp:目前运算符数组位置。传入值p若为则目前符号的数组位置为f[3]=f[3+1].......f[len-2]=f[len-1]f[len-1]='\0';s[i]=s[i+1].......s[len-1]=s[len]voidmove(char*f,double*s,intp){inti=0,len=strlen(f);/*将已经运算过的符号,空出来的位置用背面的符号来填充}f[len-}doubleconvnum(charchar*c:由数字和小数点构成的字符,用以转换成double型的数值。将输入的字符串先将其小数点以前的部分复制到temp[]若有小数点,则将小数点之后的数值,也就是小数部分先进行计算,值存入中计算完毕后,再对整数部分进行计算,值加上小数部分的值,存入numdoubleconvnum(char{doublenum=0.0;doublea=1.0;inti=0,p=0,len=0;chartemp[100];inttempi=0;intintf=1;/*正负符号批示器,若为1则为正数,为,1,此数为负数*/if(c[0]=='-{}for(i=start;i<len;{{}temp[tempi++]=c[i];/*将整数部分复制到temp[]中}{for(i=p+1;i<len;i++)/*将小数部分计

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论