📄 subject_29707.htm
字号:
<p>
序号:29707 发表者:摆渡人 发表日期:2003-02-12 09:39:11
<br>主题:求算24点C++源码
<br>内容: 求算24点C++源码,最好能有详细说明。能够在TC30中运行通过!<BR> 谢了!!
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:julei 回复日期:2003-02-12 11:44:52
<br>内容:#include "iostream.h"<BR>#include "stdlib.h"<BR><BR>void step1 (int x,int y,int * p)<BR>{<BR> p[0]=x+y;<BR> p[1]=x-y;<BR> p[2]=x*y;<BR> if (y!=0&&(x%y==0))<BR> p[3]=x/y;<BR> else <BR> p[3]=-1000; //make it couldn't reach 24<BR>}<BR><BR>int conclude (int x,int y)<BR>{<BR> if ((x+y)==24)<BR> return 0;<BR> if ((x-y)==24)<BR> return 1;<BR> if ((x*y)==24)<BR> return 2;<BR> if (y==0 || (x%y!=0))<BR> return -1;<BR> if ((x/y)==24)<BR> return 3;<BR> return -1;<BR>}<BR><BR>extern void exit (int);<BR><BR>void print (int x,int y,int s)<BR>{<BR> switch (s)<BR> {<BR><BR> case 0:<BR> cout<<x<<'+'<<y<<'='<<x+y<<' '; break;<BR> case 1:<BR> cout<<x<<'-'<<y<<'='<<x-y<<' '; break;<BR> case 2:<BR> cout<<x<<'*'<<y<<'='<<x*y<<' '; break;<BR> case 3:<BR> cout<<x<<'/'<<y<<'='<<x/y<<' '; break;<BR> default:<BR> cout<<"Error!"; <BR> exit(0);<BR> }<BR>}<BR><BR>int main ()<BR>{<BR> int i,j,k,l,m,n,result;<BR> int a[4],b[4],num[4];<BR> bool circulate=true;<BR><BR> while(circulate)<BR> {<BR> cout<<"please enter four numbers:";<BR> for (i=0;i<4;i++)<BR> {<BR> cin>>num[i];<BR> if (num[i]<=0 || num[i]>13)<BR> {<BR> cout<<"\a error! enter again."<<endl;<BR> cin.ignore(100,'\n');<BR> break;<BR> }<BR> if (i==3)<BR> circulate=false;<BR> }<BR> }<BR><BR> int signal_1=0,signal_2=0,signal_3=0,signal_4=0,signal_x=0;<BR> int sign=0,temp1=0,temp2=0;<BR><BR> for (i=0;i<4;i++)<BR> {<BR> for (j=0;j<4;j++)<BR> {<BR> if (j==i) continue;<BR> step1(num[i],num[j],a);<BR><BR> for (l=0;l<4;l++)<BR> {<BR> if (l==i||l==j) continue;<BR> n=6-i-j-l;<BR> for (k=0;k<4;k++) //signal_1 signal_2<BR> {<BR> step1(a[k],num[l],b);<BR> for (m=0;m<4;m++)<BR> {<BR> result=conclude (b[m],num[n]);<BR> if (result!=-1) <BR> { <BR> if (signal_1 && (k==m && m==result && k==0) )<BR> continue; <BR> if (signal_2 && (k==m && m==result && k==2) )<BR> continue; <BR> //if (signal_3 && (m==result && k==0) )<BR> // continue;<BR> //if (signal_4 && (m==result && k==2) )<BR> // continue;<BR><BR> else<BR> {<BR> if (k==m && m==result && k==0)<BR> signal_1=1;<BR> if (k==m && m==result && k==2)<BR> signal_2=1;<BR> // if (m==result && k==0)<BR> // signal_3=1;<BR> // if (m==result && k==2) <BR> // signal_4=1;<BR> <BR> print (num[i],num[j],k);<BR> print ( a[k],num[l],m);<BR> print ( b[m],num[n],result);<BR> cout <<endl;<BR> }<BR> }<BR> }// end of the innerest "for" statement<BR> <BR> }//end of the first condition<BR> step1 (num[l],num[n],b);<BR><BR> for (k=0;k<4;k++)<BR> {<BR> for (m=0;m<4;m++)<BR> {<BR> result=conclude (a[k],b[m]);<BR><BR> if (result !=-1)<BR> {<BR> if (signal_1 && (k==m && m==result && k==0) )<BR> continue; <BR> if (signal_2 && (k==m && m==result && k==2) )<BR> continue; <BR> if (signal_x==1 && temp1==a[k] && b[m]==temp2 && sign==result)<BR> continue;<BR><BR> if (signal_x!=1)<BR> {<BR> sign=result;<BR> temp1=a[k];<BR> temp2=b[m];<BR> signal_x=1;<BR> }<BR><BR> print (num[i],num[j],k);<BR> print (num[l],num[n],m);<BR> print ( a[k], b[m],result);<BR> cout<<endl;<BR> }<BR> }<BR> }//end of the second condition.<BR> }//end "for" starement of L<BR> }//end "for" statement of J<BR> }//end "for" statement of I<BR> system("pause");<BR> return 0;<BR>}<BR><BR><BR>//这是我写的程序,输入四个数给出所有可能。参考参考吧。msvc6 编译通过。
<br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -