Advertisement
Guest User

Untitled

a guest
Nov 18th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.24 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <cstdlib>
  3.  
  4. char map[1000][1000];
  5. int sizes[1000];
  6.  
  7. char get_byte(int a, int p) {
  8. return (a >> 8 * p) & 0x000000ff;
  9. }
  10.  
  11. int main() {
  12. int n, a,
  13. count = 0,
  14. suma = 0;
  15.  
  16. scanf("%d", &n);
  17.  
  18. //Se introduc byte-ii cititi in matricea map
  19. for (int i = 0; i < n; i++) {
  20. int m;
  21. scanf("%d", &m);
  22.  
  23. sizes[i] = m * 4;
  24.  
  25. for (int j = 0; j < m; j++) {
  26. scanf("%x", &a);
  27.  
  28. for (int z = 0; z < 4; z++) {
  29. map[i][j * 4 + z] = get_byte(a, z);
  30. }
  31. }
  32. }
  33.  
  34. //Se calculeaza suma de pe marginea hartii
  35. for (int i = 0; i < sizes[0]; i++) {
  36. suma += map[0][i];
  37. count++;
  38. }
  39.  
  40. for (int i = 0; i < sizes[n - 1]; i++) {
  41. suma += map[n - 1][i];
  42. count++;
  43. }
  44.  
  45. for (int i = 1; i < n - 1; i++) {
  46. int l = sizes[i];
  47.  
  48. suma += map[i][0] + map[i][l - 1];
  49. count += 2;
  50. }
  51.  
  52. printf("task 1\n%.7f\n", (double)suma / count);
  53.  
  54. //Se aplica modificarile
  55. int k;
  56. scanf("%d", &k);
  57.  
  58. for (int i = 0; i < k; i++) {
  59. char operation,
  60. type;
  61.  
  62. int line,
  63. index;
  64.  
  65. int len;
  66.  
  67. scanf("\n%c %c %d %d", &operation, &type, &line, &index);
  68.  
  69. len = -1;
  70.  
  71. switch (type) {
  72. case 'C':
  73. len = sizeof(char);
  74. break;
  75. case 'S':
  76. len = sizeof(short);
  77. break;
  78. case 'I':
  79. len = sizeof(int);
  80. break;
  81. }
  82.  
  83. if (index * len > sizes[line]) {
  84. sizes[line] += ((index * len - sizes[line]) / 4 + 1) * 4;
  85. }
  86.  
  87. switch (operation) {
  88. case 'M':
  89. scanf("%x", &a);
  90.  
  91. for (int j = 0; j < len; j++) {
  92. map[line][(index - 1) * len + j] = get_byte(a, j);
  93. }
  94.  
  95. break;
  96. case 'D':
  97. for (int j = 0; j < len; j++) {
  98. map[line][(index - 1) * len + j] = 0x00;
  99. }
  100. break;
  101. case 'S':
  102. char *tmp = (char *)malloc(4);
  103.  
  104. for (int j = 0; j < len; j++) {
  105. tmp[j] = map[line][(index) * len + j];
  106. }
  107.  
  108. for (int j = 0; j < len; j++) {
  109. map[line][(index) * len + j] = tmp[len - j - 1];
  110. }
  111. break;
  112. }
  113. }
  114.  
  115. //Gaura neagra
  116. /*
  117. for (int i = 0; i < n; i++) {
  118. for (int j = 0; j < sizes[i]; j++) {
  119. printf("0x%02hhx ", map[i][j]);
  120. }
  121. printf("\n");
  122. }
  123. */
  124. printf("task 2\n");
  125. for (int i = 0; i < n; i++) {
  126. for (int j = 0; j < sizes[i] / 4; j++) {
  127. for (int z = 0; z < 4; z++) {
  128. printf("%02hhx", map[i][j * 4 + 3 - z]);
  129. }
  130. printf(" ");
  131. }
  132. printf("\n");
  133. }
  134.  
  135. printf("task 3\n");
  136.  
  137. return 0;
  138. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement