algorithum.h
上传用户:sycq158
上传日期:2008-10-22
资源大小:15361k
文件大小:7k
源码类别:

游戏

开发平台:

Visual C++

  1. int  CMyView::Algorithum()
  2. {
  3. int a[4];//用来表示四个数的标号;
  4. int b[3];//用来表示三个符号;
  5. double ra[4];
  6. char istring[20];
  7. int i=0;
  8. int tag=0;
  9. int count=0;
  10. int p=0;
  11. /////////////////////////////////////////////////////////////
  12. for(a[0]=0;a[0]<4;a[0]++)
  13. {
  14. for(a[1]=0;a[1]<4;a[1]++)
  15. {
  16. if(a[0]==a[1])
  17. continue;
  18. for(a[2]=0;a[2]<4;a[2]++)
  19. {
  20. if(a[2]==a[0]||a[2]==a[1])
  21. continue;
  22. for(a[3]=0;a[3]<4;a[3]++)
  23. {
  24. if(a[3]==a[2]||a[3]==a[1]||a[3]==a[0])
  25. continue;
  26. for(i=0;i<4;i++)
  27. {
  28. ra[i]=poke[a[i]]+0.0;
  29. }
  30. for(b[0]=0;b[0]<4;b[0]++)
  31. for(b[1]=0;b[1]<4;b[1]++)
  32. for(b[2]=0;b[2]<4;b[2]++)
  33. {
  34. for(i=0;i<4;i++)
  35. {
  36. ra[i]=poke[a[i]]+0.0;
  37. }
  38. ////////////////////////////////////////////  (((a0b0a1)b1a2)b2a3)
  39. tag=0;
  40. for(i=0;i<3;i++)
  41. {
  42. switch(b[i])
  43. {
  44. case 0: ra[i+1]=ra[i]+ra[i+1];break;
  45. case 1: ra[i+1]=ra[i]-ra[i+1];break;
  46. case 2: ra[i+1]=ra[i]*ra[i+1];break;
  47. case 3:
  48. if(ra[i+1]>0.0001||ra[i+1]<-0.0001)
  49. ra[i+1]=ra[i]/ra[i+1];
  50.      else tag=1;
  51. break;
  52. }
  53.   if(tag==1)
  54. break;
  55. //解
  56.  
  57.   if(!tag&&i==2&&(ra[3]-24.0)<0.0001&&(ra[3]-24.0)>-0.0001)
  58. {
  59. istring[p++]='(';
  60. istring[p++]='(';
  61. if(poke[a[0]]/10==0)
  62. istring[p++]=48+poke[a[0]];
  63. }
  64. else
  65. {
  66. istring[p++]=poke[a[0]]/10+48;
  67. istring[p++]=poke[a[0]]%10+48;
  68. }
  69. switch(b[0])
  70. {
  71. case 0: istring[p++]='+';break;
  72. case 1: istring[p++]='-';break;
  73. case 2: istring[p++]='*';break;
  74. case 3: istring[p++]='/';break;
  75. }
  76. if(poke[a[1]]/10==0)
  77. istring[p++]=48+poke[a[1]];
  78. }
  79. else
  80. {
  81. istring[p++]=poke[a[1]]/10+48;
  82. istring[p++]=poke[a[1]]%10+48;
  83. }
  84. istring[p++]=')';
  85. switch(b[1])
  86. {
  87. case 0: istring[p++]='+';break;
  88. case 1: istring[p++]='-';break;
  89. case 2: istring[p++]='*';break;
  90. case 3: istring[p++]='/';break;
  91. }
  92. if(poke[a[2]]/10==0)
  93. istring[p++]=48+poke[a[2]];
  94. }
  95. else
  96. {
  97. istring[p++]=poke[a[2]]/10+48;
  98. istring[p++]=poke[a[2]]%10+48;
  99. }
  100. istring[p++]=')';
  101. switch(b[2])
  102. {
  103. case 0: istring[p++]='+';break;
  104. case 1: istring[p++]='-';break;
  105. case 2: istring[p++]='*';break;
  106. case 3: istring[p++]='/'; break;
  107. }
  108. if(poke[a[3]]/10==0)
  109. istring[p++]=48+poke[a[3]];
  110. }
  111. else
  112. {
  113. istring[p++]=poke[a[3]]/10+48;
  114. istring[p++]=poke[a[3]]%10+48;
  115. }
  116. istring[p++]='=';
  117. istring[p++]='2';
  118. istring[p++]='4';
  119. istring[p]=NULL;
  120. ShowFonts(istring);
  121. count++;
  122. p=0;
  123. }
  124. }
  125. /////////////////////// (a0b0a1)b1(a2b2a3)////////////////////////////
  126. tag=0;
  127. for(i=0;i<4;i++)
  128. {
  129. ra[i]=poke[a[i]];
  130. }
  131. switch(b[0])
  132. {
  133. case 0: ra[1]=ra[0]+ra[1];break;
  134. case 1: ra[1]=ra[0]-ra[1];break;
  135. case 2: ra[1]=ra[0]*ra[1];break;
  136. case 3:
  137. if(ra[1]!=0)
  138. ra[1]=(ra[0]+0.0)/ra[1];
  139.      else tag=1;
  140. break;
  141. }
  142. switch(b[2])
  143. {
  144. case 0: ra[2]=ra[2]+ra[3];break;
  145. case 1: ra[2]=ra[2]-ra[3];break;
  146. case 2: ra[2]=ra[2]*ra[3];break;
  147. case 3:
  148. if(ra[3]!=0)
  149. ra[2]=(ra[2]+0.0)/ra[3];
  150.      else tag=1;
  151. break;
  152. }
  153. switch(b[1])
  154. {
  155. case 0: ra[3]=ra[1]+ra[2];break;
  156. case 1: ra[3]=ra[1]-ra[2];break;
  157. case 2: ra[3]=ra[1]*ra[2];break;
  158. case 3:
  159. if(ra[2]!=0)
  160. ra[3]=(ra[1]+0.0)/ra[2];
  161.      else tag=1;
  162. break;
  163. }
  164. //解
  165. if(!tag&&(ra[3]-24.0)<0.0001&&(ra[3]-24.0)>-0.0001)
  166. {
  167. istring[p++]='(';
  168. if(poke[a[0]]/10==0)
  169. istring[p++]=48+poke[a[0]];
  170. }
  171. else
  172. {
  173. istring[p++]=poke[a[0]]/10+48;
  174. istring[p++]=poke[a[0]]%10+48;
  175. }
  176. switch(b[0])
  177. {
  178. case 0: istring[p++]='+';break;
  179. case 1: istring[p++]='-';break;
  180. case 2: istring[p++]='*';break;
  181. case 3: istring[p++]='/';break;
  182. }
  183. if(poke[a[1]]/10==0)
  184. istring[p++]=48+poke[a[1]];
  185. }
  186. else
  187. {
  188. istring[p++]=poke[a[1]]/10+48;
  189. istring[p++]=poke[a[1]]%10+48;
  190. }
  191. istring[p++]=')';
  192. switch(b[1])
  193. {
  194. case 0: istring[p++]='+';break;
  195. case 1: istring[p++]='-';break;
  196. case 2: istring[p++]='*';break;
  197. case 3: istring[p++]='/';break;
  198. }
  199. istring[p++]='(';
  200. if(poke[a[2]]/10==0)
  201. istring[p++]=48+poke[a[2]];
  202. }
  203. else
  204. {
  205. istring[p++]=poke[a[2]]/10+48;
  206. istring[p++]=poke[a[2]]%10+48;
  207. }
  208. switch(b[2])
  209. {
  210. case 0: istring[p++]='+';break;
  211. case 1: istring[p++]='-';break;
  212. case 2: istring[p++]='*';break;
  213. case 3: istring[p++]='/';break;
  214. }
  215. if(poke[a[3]]/10==0)
  216. istring[p++]=48+poke[a[3]];
  217. }
  218. else
  219. {
  220. istring[p++]=poke[a[3]]/10+48;
  221. istring[p++]=poke[a[3]]%10+48;
  222. }
  223. istring[p++]=')';
  224. istring[p++]='=';
  225. istring[p++]='2';
  226. istring[p++]='4';
  227. istring[p]=NULL;
  228. ShowFonts(istring);
  229. p=0;
  230. count++;
  231. }
  232. }
  233. }
  234. }
  235. }
  236. }
  237. if(count==0)
  238. ShowFonts("there is no answer at all");
  239. return count;
  240. }