void __fastcall TForm1::Button2Click(TObject *Sender) { flag=false; randomize(); NumberA=random(10)+1; NumberB=random(10)+1; NumberC=random(10)+1; NumberD=random(10)+1; Edit1->Text=FloatToStr(NumberA); Edit2->Text=FloatToStr(NumberB); Edit3->Text=FloatToStr(NumberC); Edit4->Text=FloatToStr(NumberD); Button4->SetFocus(); } |
////////////求解 for(j=1;j<=45;j++) { switch(j) { /////////////// case 2://对应表4的第二种情况 for(i=1;i<=24;i++)//注意case1只循环1次,因为四个变量求和不必考虑变量的位置 { kind(i);//调用子函数 answer=A+B+C-D; if(answer==24) { flag=true; //设置标志 result=FloatToStr(A)+"+"+FloatToStr(B)+"+"+FloatToStr(C)+"-"+FloatToStr(D)+"=24"; Label1->Caption=result; Label1->Visible =true; break; } } if(flag==true)break;//退出switch ……………………//余下的求解算术式的方法与case2相似,这里就不重复了。 case 45: flag=true; result="无解"; Label1->Caption=result; Label1->Visible =true; break; if(flag==true)break; ////////////////////// ///////////////////// } if(flag==true)//退出循环 break; } 子函数: int kind(int k) { switch(k)//排列组合4个数,对应表1 { case 1:A=NumberA;B=NumberB;C=NumberC;D=NumberD;break; case 2:A=NumberA;B=NumberB;D=NumberC;C=NumberD;break; case 3:A=NumberA;C=NumberB;B=NumberC;D=NumberD;break; case 4:A=NumberA;D=NumberB;B=NumberC;C=NumberD;break; …… case 22:D=NumberA;B=NumberB;A=NumberC;C=NumberD;break; case 23:D=NumberA;B=NumberB;C=NumberC;A=NumberD;break; default:D=NumberA;C=NumberB;B=NumberC;A=NumberD; } } |
……