Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2020
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.14 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. template <typename tp>
  6. struct t_Array {
  7. tp* array;
  8. int length;
  9.  
  10. void clean() {
  11. for (int i = 0; i < length; i++) {
  12. array[i] = 0;
  13. }
  14. }
  15.  
  16. void setSize(int n) {
  17. length = n;
  18. array = new tp[length];
  19.  
  20. clean();
  21. }
  22.  
  23. void reSize(int n) {
  24. tp* test = new tp[length];
  25. int lenOld = length;
  26.  
  27. for (int i = 0; i < length; i++) {
  28. test[i] = array[i];
  29. }
  30.  
  31. length = n;
  32. array = new tp[length];
  33.  
  34. clean();
  35.  
  36. if (lenOld > length) {
  37. lenOld = length;
  38. }
  39.  
  40. for (int i = 0; i < lenOld; i++) {
  41. array[i] = test[i];
  42. }
  43. }
  44.  
  45. void printArr() {
  46. for (int i = 0; i < length; i++) {
  47. cout << array[i] << "\t";
  48. }
  49. cout << endl;
  50. }
  51.  
  52. void add(int index, tp num) {
  53. tp* test = new tp[length];
  54.  
  55. for (int i = 0; i < length; i++) {
  56. test[i] = array[i];
  57. }
  58.  
  59. length++;
  60. array = new tp[length];
  61.  
  62. for (int i = 0; i < index; i++) {
  63. array[i] = test[i];
  64. }
  65.  
  66. array[index] = num;
  67.  
  68. for (int i = index + 1; i < length; i++) {
  69. array[i] = test[i - 1];
  70. }
  71. }
  72.  
  73. void remove(int index) {
  74. tp* test = new tp[length];
  75.  
  76. for (int i = 0; i < length; i++) {
  77. test[i] = array[i];
  78. }
  79.  
  80. length--;
  81. array = new tp[length];
  82.  
  83. for (int i = 0; i < index; i++) {
  84. array[i] = test[i];
  85. }
  86.  
  87. for (int i = index; i < length; i++) {
  88. array[i] = test[i + 1];
  89. }
  90. }
  91. };
  92.  
  93.  
  94. template <typename t>
  95. struct Linq
  96. {
  97. private:
  98. typedef bool(*Predecate)(t);
  99.  
  100. public:
  101. t_Array<t> where(t_Array<t> arr, Predecate func) {
  102. int index = 0;
  103. t_Array<t> r;
  104. r.setSize(0);
  105.  
  106. for (int i = 0; i < arr.length; i++) {
  107. if (func(arr.array[i])) {
  108. r.add(index, arr.array[i]);
  109. index++;
  110. }
  111. }
  112.  
  113. r.length = index;
  114.  
  115. return r;
  116. }
  117. };
  118.  
  119.  
  120. int main() {
  121. t_Array<int> arr;
  122. Linq<int> linq;
  123.  
  124. arr.setSize(5);
  125. arr.printArr();
  126.  
  127. for (int i = 0; i < 5; i++) {
  128. arr.array[i] = i + 1;
  129. }
  130.  
  131. arr.printArr();
  132.  
  133. arr.add(3, -25);
  134. arr.printArr();
  135.  
  136. cout << "\n\n";
  137.  
  138. t_Array<int> r = linq.where(arr, [](int a) {
  139. if (a > 2) {
  140. return true;
  141. }
  142. else {
  143. return false;
  144. }
  145. });
  146.  
  147. r.printArr();
  148.  
  149. return 0;
  150. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement