Hex Artifact Content
Not logged in

Artifact 0a8206adef9888890030c149bad9e725bfa3696a:


0000: 73 74 72 75 63 74 20 43 6f 75 6e 74 45 78 70 72  struct CountExpr
0010: 65 73 73 69 6f 6e 73 0a 7b 0a 09 73 74 61 74 69  essions.{..stati
0020: 63 20 69 6e 74 20 61 64 64 28 69 6e 74 20 78 2c  c int add(int x,
0030: 20 69 6e 74 20 79 29 20 7b 20 72 65 74 75 72 6e   int y) { return
0040: 20 78 2b 79 3b 20 7d 0a 09 73 74 61 74 69 63 20   x+y; }..static 
0050: 69 6e 74 20 73 75 62 28 69 6e 74 20 78 2c 20 69  int sub(int x, i
0060: 6e 74 20 79 29 20 7b 20 72 65 74 75 72 6e 20 78  nt y) { return x
0070: 2d 79 3b 20 7d 0a 09 73 74 61 74 69 63 20 69 6e  -y; }..static in
0080: 74 20 6d 75 6c 28 69 6e 74 20 78 2c 20 69 6e 74  t mul(int x, int
0090: 20 79 29 20 7b 20 72 65 74 75 72 6e 20 78 2a 79   y) { return x*y
00a0: 3b 20 7d 0a 0a 09 69 6e 74 20 63 61 6c 63 45 78  ; }...int calcEx
00b0: 70 72 65 73 73 69 6f 6e 73 28 69 6e 74 20 78 2c  pressions(int x,
00c0: 20 69 6e 74 20 79 2c 20 69 6e 74 20 76 61 6c 29   int y, int val)
00d0: 0a 09 7b 0a 09 09 69 6e 74 20 6e 75 6d 5b 5d 5b  ..{...int num[][
00e0: 34 5d 20 3d 20 7b 0a 09 09 09 7b 78 2c 78 2c 79  4] = {....{x,x,y
00f0: 2c 79 7d 2c 0a 09 09 09 7b 78 2c 79 2c 78 2c 79  ,y},....{x,y,x,y
0100: 7d 2c 0a 09 09 09 7b 78 2c 79 2c 79 2c 78 7d 2c  },....{x,y,y,x},
0110: 0a 09 09 09 7b 79 2c 78 2c 78 2c 79 7d 2c 0a 09  ....{y,x,x,y},..
0120: 09 09 7b 79 2c 78 2c 79 2c 78 7d 2c 0a 09 09 09  ..{y,x,y,x},....
0130: 7b 79 2c 79 2c 78 2c 78 7d 2c 0a 09 09 7d 3b 0a  {y,y,x,x},...};.
0140: 09 09 69 6e 74 20 28 2a 6f 70 5b 5d 29 28 69 6e  ..int (*op[])(in
0150: 74 2c 69 6e 74 29 20 3d 20 7b 20 26 61 64 64 2c  t,int) = { &add,
0160: 20 26 73 75 62 2c 20 26 6d 75 6c 20 7d 3b 0a 0a   &sub, &mul };..
0170: 09 09 69 6e 74 20 63 6e 74 20 3d 20 30 3b 0a 09  ..int cnt = 0;..
0180: 09 66 6f 72 28 69 6e 74 20 61 3d 30 3b 20 61 3c  .for(int a=0; a<
0190: 36 3b 20 2b 2b 61 29 0a 09 09 66 6f 72 28 69 6e  6; ++a)...for(in
01a0: 74 20 69 3d 30 3b 20 69 3c 33 3b 20 2b 2b 69 29  t i=0; i<3; ++i)
01b0: 0a 09 09 66 6f 72 28 69 6e 74 20 6a 3d 30 3b 20  ...for(int j=0; 
01c0: 6a 3c 33 3b 20 2b 2b 6a 29 0a 09 09 66 6f 72 28  j<3; ++j)...for(
01d0: 69 6e 74 20 6b 3d 30 3b 20 6b 3c 33 3b 20 2b 2b  int k=0; k<3; ++
01e0: 6b 29 0a 09 09 09 69 66 28 20 76 61 6c 20 3d 3d  k)....if( val ==
01f0: 20 6f 70 5b 6b 5d 28 20 6f 70 5b 6a 5d 28 20 6f   op[k]( op[j]( o
0200: 70 5b 69 5d 28 6e 75 6d 5b 61 5d 5b 30 5d 2c 20  p[i](num[a][0], 
0210: 6e 75 6d 5b 61 5d 5b 31 5d 29 2c 20 6e 75 6d 5b  num[a][1]), num[
0220: 61 5d 5b 32 5d 20 29 2c 20 6e 75 6d 5b 61 5d 5b  a][2] ), num[a][
0230: 33 5d 20 29 20 29 0a 09 09 09 09 2b 2b 63 6e 74  3] ) ).....++cnt
0240: 3b 0a 09 09 72 65 74 75 72 6e 20 63 6e 74 3b 0a  ;...return cnt;.
0250: 09 7d 0a 7d 3b 0a                                .}.};.