Guest User

Untitled

a guest
Jun 18th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.26 KB | None | 0 0
  1. #include <iostream>
  2. #include <math.h>
  3.  
  4. template <size_t N>
  5. class delta
  6. {
  7. private:
  8. int *deltatree;
  9. int R;
  10. public:
  11. delta(int (&dseed)[N])
  12. : R(N)
  13. {
  14. int treesize = (N * (N + 1)) / 2;
  15. deltatree = new int[treesize];
  16.  
  17. for (int i = 0; i < N; i++)
  18. {
  19. deltatree[i] = dseed[i];
  20. }
  21. int j = 0, k = 0, n = 0, in = 0;
  22. for (int i = 0; i < treesize - N; i++)
  23. {
  24. if (j == 1)
  25. {
  26. in++;
  27. j = 0;
  28. }
  29. if (k < N - n - 1)
  30. {
  31. k++;
  32. }
  33. else
  34. {
  35. n++;
  36. j++;
  37. k = 1;
  38. }
  39. deltatree[N + i] = abs(deltatree[in + j] - deltatree[in + 1 + j]);
  40. in++;
  41. }
  42. /* for (int i = 0; i < treesize; i++)
  43. {
  44. std::cout << deltatree[i] << "\n";
  45. }*/
  46. }
  47. ~delta(){
  48. delete [] deltatree;
  49. deltatree = NULL;
  50. }
  51. inline int& operator()(int row, int col){
  52. return deltatree[(row*(2*R-row+1))/2-2-R+row+col];
  53. }
  54. inline int operator()(int row, int col) const{ deltatree[(row*(2*R-row+1))/2-2-R+row+col];
  55. }
  56. void showDelta (){
  57. int j = 0;
  58. for (int r = 1; r <= R; r++){
  59. for (int c = 1; c <= R-j; c++){
  60. std::cout << this->operator()(r,c) << " ";
  61. }
  62. std::cout << "\n";
  63. for (int i = 0; i < j+1; i++){
  64. std::cout << " ";
  65. }
  66. j++;
  67. }
  68. }
  69. };
  70.  
  71. int main()
  72. {
  73. int seed[] = {2, 4, 3, 8, 9};
  74. delta<sizeof(seed)/sizeof(seed[0])> a(seed);
  75. a.showDelta();
  76. }
Add Comment
Please, Sign In to add comment