Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <math.h>
- template <size_t N>
- class delta
- {
- private:
- int *deltatree;
- int R;
- public:
- delta(int (&dseed)[N])
- : R(N)
- {
- int treesize = (N * (N + 1)) / 2;
- deltatree = new int[treesize];
- for (int i = 0; i < N; i++)
- {
- deltatree[i] = dseed[i];
- }
- int j = 0, k = 0, n = 0, in = 0;
- for (int i = 0; i < treesize - N; i++)
- {
- if (j == 1)
- {
- in++;
- j = 0;
- }
- if (k < N - n - 1)
- {
- k++;
- }
- else
- {
- n++;
- j++;
- k = 1;
- }
- deltatree[N + i] = abs(deltatree[in + j] - deltatree[in + 1 + j]);
- in++;
- }
- /* for (int i = 0; i < treesize; i++)
- {
- std::cout << deltatree[i] << "\n";
- }*/
- }
- ~delta(){
- delete [] deltatree;
- deltatree = NULL;
- }
- inline int& operator()(int row, int col){
- return deltatree[(row*(2*R-row+1))/2-2-R+row+col];
- }
- inline int operator()(int row, int col) const{ deltatree[(row*(2*R-row+1))/2-2-R+row+col];
- }
- void showDelta (){
- int j = 0;
- for (int r = 1; r <= R; r++){
- for (int c = 1; c <= R-j; c++){
- std::cout << this->operator()(r,c) << " ";
- }
- std::cout << "\n";
- for (int i = 0; i < j+1; i++){
- std::cout << " ";
- }
- j++;
- }
- }
- };
- int main()
- {
- int seed[] = {2, 4, 3, 8, 9};
- delta<sizeof(seed)/sizeof(seed[0])> a(seed);
- a.showDelta();
- }
Add Comment
Please, Sign In to add comment