1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| type tabori = array[0..6] of longint ;
const signe : string[4] = '+-*/' ;
nombres : tab = (963,25,5,4,3,3,1) ;
var trouve,echange : boolean ;
aa : longint ;
ii,jj : integer ;
procedure operations(var t : tabori ;max : integer) ;
var i,j1,j2 : integer ;
a : longint ;
tabcop : tab ;
begin
for i:=1 to 4 do
for j1:=1 to max-1 do
for j2:=j1+1 to max do
begin
case i of
1 : a:=tabori[j1]+tabori[j2] ;
2 : a:=tabori[j1]-tabori[j2] ;
3 : a:=tabori[j1]*tabori[j2] ;
4 : begin
a:=tabori[j1] div tabori[j2] ;
if tabori[j2]*a<>tabori[j1] then a:=0 ;
end ;
end ;
if a>0 then
begin
if a=t[0] then
begin
trouve:=true ;exit ;
end ;
move(tabori,tabcop,28) ;
tabcop[j1]:=a ;tabcop[j2]:=0 ;
repeat
echange:=false ;
for ii:=1 to max-1 do
if tabcop[ii]<tabcop[ii+1] then
begin
aa:=tabcop[jii] ;
tabcop[jii]:=tabcop[jii+1] ;
tabcop[jii+1]:=aa ;
echange:=true ;
end ;
until not echange ;
operations(t1,max-1) ;
if trouve then
begin
write(tabpri[j1],signe[i],tabpri[j2],'=',a) ;
Form1.ListBox1.Items.Add(inttostr(tabpri[j1])+signe[i]+inttostr(tabpri[j2])+'='+inttostr(a));
exit ;
end ;
end ;
end ;
end ;
procedure TForm1.Button1Click(Sender: TObject);
begin
Screen.Cursor:=crHourGlass;
trouve:=false ;
ListBox1.Clear;
Application.ProcessMessages;
operations(nombres,6) ;
Screen.Cursor:=crDefault;
end; |
Partager