Advertisement
josiftepe

Untitled

Apr 19th, 2021
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.12 KB | None | 0 0
  1. //Blagoja Mladenov
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. int main() {
  7. char *c;
  8. int i;
  9. int j;
  10. c = (char*) malloc(3 * sizeof(char));
  11. int **mat;
  12. mat = (int **)malloc(2000 * sizeof(int *));
  13. for(i = 0; i < 2000; i++) {
  14. *(mat + i) = (int*) malloc(2000 * sizeof(int));
  15. }
  16. int *sz = (int*)malloc(2000 * sizeof(int));
  17. for(i = 0; i < 2000; i++) {
  18. *(sz + i) = 0;
  19. }
  20. int r = 0;
  21. while(1) {
  22. scanf("%s", c);
  23. if(strcmp(c, "END") == 0) {
  24. break;
  25. }
  26. if(strcmp(c, "AFR") == 0) {
  27. int n;
  28. scanf("%d", &n);
  29. int *tmp = (int*) malloc(n * sizeof(int));
  30. for(i = 0; i < n; i++) {
  31. scanf("%d", (tmp + i));
  32. }
  33. int **new = (int**)malloc((r + 1) * sizeof(int*));
  34. for(i = 0; i < r; i++) {
  35. *(new + i + 1) = (int*)malloc((*(sz + i)) * sizeof(int));
  36. for(j = 0; j < *(sz + i); j++) {
  37. *(*(new + i + 1) + j) = *(*(mat + i) + j);
  38. }
  39. }
  40. *(new) = (int*)malloc(n * sizeof(int));
  41. for(i = 0; i < n; i++) {
  42. *(*(new + 0) + i) = *(tmp + i);
  43. }
  44. for(i = r; i >= 0; i--) {
  45. *(sz + i) = *(sz + i - 1);
  46. }
  47. *sz = n;
  48. r++;
  49. for(i = 0; i < r; i++) {
  50. for(j = 0; j < *(sz + i); j++) {
  51. *(*(mat + i) + j) = *(*(new + i) + j);
  52. }
  53. }
  54. free(tmp);
  55. for(i = 0; i < r; i++) {
  56. free(*(new + i));
  57. }
  58. free(new);
  59. }
  60. else if(strcmp(c, "ALR") == 0) {
  61. int n;
  62. scanf("%d", &n);
  63. for(i = 0; i < n; i++) {
  64. scanf("%d", (*(mat + r) + i));
  65. }
  66. *(sz + r) = n;
  67. r++;
  68.  
  69. }
  70. else if(strcmp(c, "DFR") == 0) {
  71. if(r > 0) {
  72. for(i = 0; i < r - 1; i++) {
  73. *(sz + i) = *(sz + i + 1);
  74. for(j = 0; j < *(sz + i); j++) {
  75. *(*(mat + i) + j) = *(*(mat + i + 1) + j);
  76. }
  77. }
  78. r--;
  79. *(sz + r) = 0;
  80. }
  81. }
  82. else if(strcmp(c, "DLR") == 0) {
  83. if(r > 0) {
  84. r--;
  85. *(sz + r) = 0;
  86. }
  87. }
  88. else if(strcmp(c, "PRT") == 0) {
  89. printf("%d\n", r);
  90. for(i = 0; i < r; i++) {
  91. printf("%d ", *(sz + i));
  92. for(j = 0; j < *(sz + i); j++) {
  93. printf("%d ", *(*(mat + i) + j));
  94. }
  95. printf("\n");
  96. }
  97. }
  98. else if(strcmp(c, "AFC") == 0) {
  99. int n;
  100. scanf("%d", &n);
  101. for(i = 0; i < r; i++) {
  102. for(j = *(sz + i); j > 0; j--) {
  103. *(*(mat + i) + j) = *(*(mat + i) + j - 1);
  104. }
  105. *(sz + i) += 1;
  106. }
  107. for(i = 0; i < n; i++) {
  108. scanf("%d", *(mat + i));
  109. }
  110. }
  111. else if(strcmp(c, "ALC") == 0) {
  112. int n;
  113. scanf("%d", &n);
  114. for(i = 0; i < n; i++) {
  115. scanf("%d", (*(mat + i) + *(sz + i)));
  116. *(sz + i) += 1;
  117. }
  118. }
  119. else if(strcmp(c, "DFC") == 0) {
  120. for(i = 0; i < r; i++) {
  121. for(j = 0; j + 1 < *(sz + i); j++) {
  122. *(*(mat + i) + j) = *(*(mat + i) + j + 1);
  123. }
  124. *(sz + i) -= 1;
  125. }
  126. }
  127. else if(strcmp(c, "DLC") == 0) {
  128. for(i = 0; i < r; i++) {
  129. if(*(sz + i) > 0) {
  130. *(sz + i) -= 1;
  131. }
  132. }
  133. }
  134.  
  135.  
  136. }
  137.  
  138. free(c);
  139. free(sz);
  140. for(i = 0; i < r; i++) {
  141. free(*(mat + i));
  142. }
  143. free(mat);
  144.  
  145. return 0;
  146. }
  147.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement