Advertisement
Scratius

DvdLevVerhPoChas

Dec 5th, 2019
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.65 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include "stdio.h"
  3. #include <time.h>
  4. #define M 5
  5. #define N 5
  6.  
  7. void init_dinamic_matrix(int* A[], int n, int m);
  8. void print_dinamic_matrix(int*A[], int n, int m);
  9. void the_power_of_spiral(int* A[], int n, int m);
  10.  
  11. int main() {
  12. int** A;
  13.  
  14. A = (int**)malloc(N * sizeof(int*));
  15. for (int i = 0; i < N; i++) {
  16. A[i] = (int*)malloc(M * sizeof(int));
  17. }
  18. init_dinamic_matrix(A, N, M);
  19. print_dinamic_matrix(A, N, M);
  20. int colvo = M * N;
  21. printf("\n\n");
  22. the_power_of_spiral(A, N, M);
  23. for (int i = 0; i < N; i++)
  24. free(A[i]);
  25. free(A);
  26. getchar();
  27. return 0;
  28. }
  29.  
  30.  
  31. void init_dinamic_matrix(int* A[], int n, int m) {
  32. for (int i = 0; i < n; i++) {
  33. for (int j = 0; j < m; j++) {
  34. A[i][j] = rand() % 100;
  35. }
  36. }
  37. }
  38.  
  39. void print_dinamic_matrix(int*A[], int n, int m) {
  40. for (int i = 0; i < n; i++) {
  41. for (int j = 0; j < m; j++) {
  42. printf("%3d", A[i][j]);
  43. }
  44. printf("\n");
  45. }
  46. }
  47.  
  48. void the_power_of_spiral(int* a[], int n, int m) {
  49. int i,j;
  50. int upper = 0;
  51. int bottom = n - 1;
  52. int left = 0;
  53. int right = m - 1;
  54. int qu = n*m;
  55. while (qu > 0) {
  56. for (j = left; j < right; j++) {
  57.             printf("%d ", a[upper][j]);
  58.             qu--;
  59.             if (qu == 0) { break; }
  60.         }
  61.         for (i = upper; i < bottom; i++) {
  62.             printf("%d ", a[i][right]);
  63.             qu--;
  64.             if (qu == 0) { break; }
  65.         }
  66.        
  67.         for (j = right; j > left; j--) {
  68.             printf("%d ", a[bottom][j]);
  69.             qu--;
  70.             if (qu == 0) { break; }
  71.         }
  72.            
  73.         for (i = bottom; i > upper; i--) {
  74.             printf("%d ", a[i][left]);
  75.             qu--;
  76.             if (qu == 0) { break; }
  77.         }
  78. left++;
  79. right--;
  80. upper++;
  81. bottom--;
  82. if (qu == 1) {
  83. printf("%3d", a[left][upper]);
  84.  
  85. break;
  86. }
  87. }
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement