Advertisement
josiftepe

Untitled

Apr 19th, 2021
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.03 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. c = (char*) malloc(3 * sizeof(char));
  9. int **mat;
  10. mat = (int **)malloc(2000 * sizeof(int *));
  11. for(int i = 0; i < 2000; i++) {
  12. *(mat + i) = (int*) malloc(2000 * sizeof(int));
  13. }
  14. int *sz = (int*)malloc(2000 * sizeof(int));
  15. for(int i = 0; i < 2000; i++) {
  16. *(sz + i) = 0;
  17. }
  18. int r = 0;
  19. while(1) {
  20. scanf("%s", c);
  21. if(strcmp(c, "END") == 0) {
  22. break;
  23. }
  24. if(strcmp(c, "AFR") == 0) {
  25. int n;
  26. scanf("%d", &n);
  27. int *tmp = (int*) malloc(n * sizeof(int));
  28. for(int i = 0; i < n; i++) {
  29. scanf("%d", (tmp + i));
  30. }
  31. int **new = (int**)malloc((r + 1) * sizeof(int*));
  32. for(int i = 0; i < r; i++) {
  33. *(new + i + 1) = (int*)malloc((*(sz + i)) * sizeof(int));
  34. for(int j = 0; j < *(sz + i); j++) {
  35. *(*(new + i + 1) + j) = *(*(mat + i) + j);
  36. }
  37. }
  38. *(new) = (int*)malloc(n * sizeof(int));
  39. for(int i = 0; i < n; i++) {
  40. *(*(new + 0) + i) = *(tmp + i);
  41. }
  42. for(int i = r; i >= 0; i--) {
  43. *(sz + i) = *(sz + i - 1);
  44. }
  45. *sz = n;
  46. r++;
  47. for(int i = 0; i < r; i++) {
  48. for(int j = 0; j < *(sz + i); j++) {
  49. *(*(mat + i) + j) = *(*(new + i) + j);
  50. }
  51. }
  52. free(tmp);
  53. for(int i = 0; i < r; i++) {
  54. free(*(new + i));
  55. }
  56. free(new);
  57. }
  58. else if(strcmp(c, "ALR") == 0) {
  59. int n;
  60. scanf("%d", &n);
  61. for(int i = 0; i < n; i++) {
  62. scanf("%d", (*(mat + r) + i));
  63. }
  64. *(sz + r) = n;
  65. r++;
  66.  
  67. }
  68. else if(strcmp(c, "DFR") == 0) {
  69. if(r > 0) {
  70. for(int i = 0; i < r - 1; i++) {
  71. *(sz + i) = *(sz + i + 1);
  72. for(int j = 0; j < *(sz + i); j++) {
  73. *(*(mat + i) + j) = *(*(mat + i + 1) + j);
  74. }
  75. }
  76. r--;
  77. *(sz + r) = 0;
  78. }
  79. }
  80. else if(strcmp(c, "DLR") == 0) {
  81. if(r > 0) {
  82. r--;
  83. *(sz + r) = 0;
  84. }
  85. }
  86. else if(strcmp(c, "PRT") == 0) {
  87. printf("%d\n", r);
  88. for(int i = 0; i < r; i++) {
  89. printf("%d ", *(sz + i));
  90. for(int j = 0; j < *(sz + i); j++) {
  91. printf("%d ", *(*(mat + i) + j));
  92. }
  93. printf("\n");
  94. }
  95. }
  96. }
  97.  
  98. free(c);
  99. free(sz);
  100. for(int i = 0; i < r; i++) {
  101. free(*(mat + i));
  102. }
  103. free(mat);
  104.  
  105. return 0;
  106. }
  107.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement