Advertisement
nolog1n

Untitled

Feb 28th, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.87 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. struct tuple {
  4. int tuple_count = 0;
  5. char * tuple_arr_type = new char[48];
  6.  
  7. bool * tuple_bool = new bool[48];
  8. char * tuple_char = new char[48];
  9. int * tuple_int = new int[48];
  10. double * tuple_double = new double[48];
  11. long int * tuple_lint = new long int[48];
  12. };
  13.  
  14.  
  15. void tuple_add(tuple & arr, bool elem) {
  16. arr.tuple_bool[arr.tuple_count] = elem;
  17. arr.tuple_arr_type[arr.tuple_count] = 'b';
  18. arr.tuple_count++;
  19. }
  20.  
  21. void tuple_add(tuple & arr, char elem) {
  22. arr.tuple_char[arr.tuple_count] = elem;
  23. arr.tuple_arr_type[arr.tuple_count] = 'c';
  24. arr.tuple_count++;
  25. }
  26.  
  27. void tuple_add(tuple & arr, int elem) {
  28. arr.tuple_int[arr.tuple_count] = elem;
  29. arr.tuple_arr_type[arr.tuple_count] = 'i';
  30. arr.tuple_count++;
  31. }
  32.  
  33. void tuple_add(tuple & arr, double elem) {
  34. arr.tuple_double[arr.tuple_count] = elem;
  35. arr.tuple_arr_type[arr.tuple_count] = 'd';
  36. arr.tuple_count++;
  37. }
  38.  
  39. void tuple_add(tuple & arr, long int elem) {
  40. arr.tuple_lint[arr.tuple_count] = elem;
  41. arr.tuple_arr_type[arr.tuple_count] = 'l';
  42. arr.tuple_count++;
  43. }
  44.  
  45. // Del function's (no tuple)
  46. void del_elem_arr(bool * arr, int size, int index) {
  47. for (int i = index; i < size - 1; i++) {
  48. arr[i] = arr[i + 1];
  49. }
  50. }
  51.  
  52. void del_elem_arr(char * arr, int size, int index) {
  53. for (int i = index; i < size - 1; i++) {
  54. arr[i] = arr[i + 1];
  55. }
  56. }
  57.  
  58. void del_elem_arr(int * arr, int size, int index) {
  59. for (int i = index; i < size - 1; i++) {
  60. arr[i] = arr[i + 1];
  61. }
  62. }
  63.  
  64. void del_elem_arr(double * arr, int size, int index) {
  65. for (int i = index; i < size - 1; i++) {
  66. arr[i] = arr[i + 1];
  67. }
  68. }
  69.  
  70. void del_elem_arr(long int * arr, int size, int index) {
  71. for (int i = index; i < size - 1; i++) {
  72. arr[i] = arr[i + 1];
  73. }
  74. }
  75.  
  76. // Del function (tuple)
  77. void tuple_del(tuple & arr, int index) {
  78. if (index < arr.tuple_count && index > -1) {
  79. char type = arr.tuple_arr_type[index];
  80.  
  81.  
  82. del_elem_arr(arr.tuple_arr_type, arr.tuple_count, index);
  83.  
  84. if (type == 'b') {
  85. del_elem_arr(arr.tuple_bool, arr.tuple_count, index);
  86. } else
  87. if (type == 'c') {
  88. del_elem_arr(arr.tuple_char, arr.tuple_count, index);
  89. } else
  90. if (type == 'i') {
  91. del_elem_arr(arr.tuple_int, arr.tuple_count, index);
  92. } else
  93. if (type == 'd') {
  94. del_elem_arr(arr.tuple_double, arr.tuple_count, index);
  95. } else
  96. if (type == 'l') {
  97. del_elem_arr(arr.tuple_lint, arr.tuple_count, index);
  98. }
  99.  
  100. arr.tuple_count--;
  101. } else {
  102. std::cout << "\nERROR: invalid index\n";
  103. }
  104. }
  105.  
  106. // Return function's
  107. bool tuple_return_bool(tuple & arr, int index) {
  108. char type = arr.tuple_arr_type[index];
  109. bool value = 0;
  110.  
  111. if (type == 'b') {
  112. value = arr.tuple_double[index];
  113. } else
  114. if (type == 'c') {
  115. value = arr.tuple_char[index];
  116. } else
  117. if (type == 'i') {
  118. value = arr.tuple_int[index];
  119. } else
  120. if (type == 'd') {
  121. value = arr.tuple_double[index];
  122. } else
  123. if (type == 'l') {
  124. value = arr.tuple_lint[index];
  125. }
  126.  
  127. if (index >= arr.tuple_count || index < 0) {
  128. std::cout << "\nERROR: invalid index. Return value zero (false).\n";
  129. return 0;
  130. }
  131.  
  132. return value;
  133. }
  134.  
  135. char tuple_return_char(tuple & arr, int index) {
  136. char type = arr.tuple_arr_type[index];
  137. char value = 0;
  138.  
  139. if (type == 'b') {
  140. value = arr.tuple_double[index];
  141. } else
  142. if (type == 'c') {
  143. value = arr.tuple_char[index];
  144. } else
  145. if (type == 'i') {
  146. value = arr.tuple_int[index];
  147. } else
  148. if (type == 'd') {
  149. value = arr.tuple_double[index];
  150. } else
  151. if (type == 'l') {
  152. value = arr.tuple_lint[index];
  153. }
  154.  
  155. if (index >= arr.tuple_count || index < 0) {
  156. std::cout << "\nERROR: invalid index. Return value zero (false).\n";
  157. return 0;
  158. }
  159.  
  160. return value;
  161. }
  162.  
  163. int tuple_return_int(tuple & arr, int index) {
  164. char type = arr.tuple_arr_type[index];
  165. int value = 0;
  166.  
  167. if (type == 'b') {
  168. value = arr.tuple_double[index];
  169. } else
  170. if (type == 'c') {
  171. value = arr.tuple_char[index];
  172. } else
  173. if (type == 'i') {
  174. value = arr.tuple_int[index];
  175. } else
  176. if (type == 'd') {
  177. value = arr.tuple_double[index];
  178. } else
  179. if (type == 'l') {
  180. value = arr.tuple_lint[index];
  181. }
  182.  
  183. if (index >= arr.tuple_count || index < 0) {
  184. std::cout << "\nERROR: invalid index. Return value zero (false).\n";
  185. return 0;
  186. }
  187.  
  188. return value;
  189. }
  190.  
  191. double tuple_return_double(tuple & arr, int index) {
  192. char type = arr.tuple_arr_type[index];
  193. double value = 0;
  194.  
  195. if (type == 'b') {
  196. value = arr.tuple_double[index];
  197. } else
  198. if (type == 'c') {
  199. value = arr.tuple_char[index];
  200. } else
  201. if (type == 'i') {
  202. value = arr.tuple_int[index];
  203. } else
  204. if (type == 'd') {
  205. value = arr.tuple_double[index];
  206. } else
  207. if (type == 'l') {
  208. value = arr.tuple_lint[index];
  209. }
  210.  
  211. if (index >= arr.tuple_count || index < 0) {
  212. std::cout << "\nERROR: invalid index. Return value zero (false).\n";
  213. return 0;
  214. }
  215.  
  216. return value;
  217. }
  218.  
  219. long int tuple_return_long_int(tuple & arr, int index) {
  220. char type = arr.tuple_arr_type[index];
  221. double value = 0;
  222.  
  223. if (type == 'b') {
  224. value = arr.tuple_double[index];
  225. } else
  226. if (type == 'c') {
  227. value = arr.tuple_char[index];
  228. } else
  229. if (type == 'i') {
  230. value = arr.tuple_int[index];
  231. } else
  232. if (type == 'd') {
  233. value = arr.tuple_double[index];
  234. } else
  235. if (type == 'l') {
  236. value = arr.tuple_lint[index];
  237. }
  238.  
  239. if (index >= arr.tuple_count || index < 0) {
  240. std::cout << "\nERROR: invalid index. Return value zero (false).\n";
  241. return 0;
  242. }
  243.  
  244. return value;
  245. }
  246.  
  247. void tuple_output(tuple & arr) {
  248. std::cout << "\nOutput tuple (size: " << arr.tuple_count << "): {";
  249. for (int i = 0; arr.tuple_count > i; i++) {
  250. char type = arr.tuple_arr_type[i];
  251.  
  252. if (type == 'b') {
  253. if (arr.tuple_bool[i] == 0) {
  254. std::cout << " False ";
  255. } else {
  256. std::cout << " True ";
  257. }
  258.  
  259. } else
  260. if (type == 'c') {
  261. std::cout << " '" << arr.tuple_char[i] << "' ";
  262. } else
  263. if (type == 'i') {
  264. std::cout << " " << arr.tuple_int[i] << " ";
  265. } else
  266. if (type == 'd') {
  267. std::cout << " " << arr.tuple_double[i] << " ";
  268. } else
  269. if (type == 'l') {
  270. std::cout << " " << arr.tuple_lint[i] << " ";
  271. }
  272. }
  273. std::cout << "}\n";
  274. }
  275.  
  276. int main() {
  277. tuple tuple_test;
  278.  
  279. tuple_add(tuple_test, 0.3);
  280. for (int i = 0; 5 > i; i++) {
  281. static int k = 1;
  282. k *= 2;
  283.  
  284. tuple_add(tuple_test, k);
  285. }
  286. tuple_add(tuple_test, 0.6);
  287.  
  288. for (int i = 0; 5 > i; i++) {
  289. static int k = 1;
  290. k *= 2;
  291.  
  292. tuple_add(tuple_test, k);
  293. }
  294.  
  295. tuple_output(tuple_test);
  296.  
  297. for (int i = 0; 7 > i; i++) {
  298. tuple_del(tuple_test, 0);
  299. }
  300.  
  301. tuple_output(tuple_test);
  302.  
  303. for (int i = 0; tuple_test.tuple_count > i; i++) {
  304. static int k = 0;
  305. k += tuple_return_int(tuple_test, i);
  306.  
  307. if (i == tuple_test.tuple_count - 1) {
  308. std::cout << "Summa: " << k << std::endl;
  309. }
  310. }
  311.  
  312. int k = tuple_test.tuple_count;
  313. for (int i = 0; k > i; i++) {
  314. char symbol = (tuple_return_int(tuple_test, i) % 26) + 65;
  315. tuple_add(tuple_test, symbol);
  316. }
  317.  
  318. tuple_output(tuple_test);
  319.  
  320. return 0;
  321. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement