fork download
  1. #include <stdio.h>
  2.  
  3. #define REORDER3(b1, b2, b3, a1, a2, a3 ) \
  4. { \
  5.   typeof(a1) _tmp[] = {a1, a2, a3}; \
  6.   b1 = _tmp[0]; b2 = _tmp[1]; b3 = _tmp[2]; \
  7. } while ( 0 )
  8.  
  9. void uintprint3(unsigned *a)
  10. {
  11. printf("%u %u %u\n", a[0], a[1], a[2]);
  12. }
  13.  
  14.  
  15. void sort3( unsigned int a[3] )
  16. {
  17. if (a[0] > a[1])
  18. {
  19. if (a[1] > a[2])
  20. {
  21. REORDER3 (
  22. a[0], a[1], a[2],
  23. a[2], a[1], a[0]);
  24. return;
  25. }
  26. else
  27. {
  28. if (a[0] > a[2])
  29. {
  30. REORDER3 (
  31. a[0], a[1], a[2],
  32. a[1], a[2], a[0]);
  33. return;
  34. }
  35. else
  36. {
  37. REORDER3 (
  38. a[0], a[1], a[2],
  39. a[1], a[0], a[2]);
  40. return;
  41. }
  42. }
  43. }
  44. else
  45. {
  46. if (a[1] <= a[2])
  47. {
  48. return; //NO REORDER
  49. }
  50. else
  51. {
  52. if (a[0] <= a[2])
  53. {
  54. REORDER3 (
  55. a[0], a[1], a[2],
  56. a[0], a[2], a[1] );
  57. return;
  58. }
  59. else
  60. {
  61. REORDER3 (
  62. a[0], a[1], a[2],
  63. a[2], a[0], a[1] );
  64. return;
  65. }
  66. }
  67. }
  68. }
  69.  
  70. int main(void)
  71. {
  72. unsigned int a[] = {0, 1, 2};
  73. unsigned int b[] = {0, 2, 1};
  74. unsigned int c[] = {1, 2, 0};
  75. unsigned int d[] = {1, 0, 2};
  76. unsigned int e[] = {2, 0, 1};
  77. unsigned int f[] = {2, 1, 0};
  78. sort3(a); sort3(b); sort3(c); sort3(d); sort3(e); sort3(f);
  79.  
  80. uintprint3(a);
  81. uintprint3(b);
  82. uintprint3(c);
  83. uintprint3(d);
  84. uintprint3(e);
  85. uintprint3(f);
  86. return 0;
  87. }
Success #stdin #stdout 0s 1832KB
stdin
Standard input is empty
stdout
0 1 2
0 1 2
0 1 2
0 1 2
0 1 2
0 1 2