Advertisement
Guest User

Fixed

a guest
Jan 11th, 2022
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.39 KB | None | 0 0
  1. #include<stdlib.h>
  2. #include<stdio.h>
  3. #include<time.h>
  4. #include<math.h>
  5.  
  6. #include"matrix.h"
  7.  
  8. //Create a dynamic matrix.
  9. int** CreatMat(int N){
  10. int i,**T;
  11. T = (int**)malloc(sizeof(int*)*N);
  12. if(T!=NULL){
  13. for(i=0;i<N;i++){
  14. T[i]=(int*)malloc(sizeof(int)*N);
  15. if(T[i]==NULL){
  16. printf("\nCreatMat()::Allocation failed at block %d",i);
  17. for(i=i;i>=0;i--){
  18. free(T[i]);
  19. T[i]=NULL;
  20. }
  21. free(T);
  22. T=NULL;
  23. return T;
  24. }
  25. }
  26. }
  27. return T;
  28. }
  29.  
  30. //Free a dynamic matrix.
  31. void FreeMat(int*** T,int N){
  32. int i;
  33. for(i=0;i<N;i++){
  34. free((*T)[i]);
  35. (*T)[i]=NULL;
  36. }
  37. free(*T);
  38. *T = NULL;
  39. }
  40. void RandMat(int*** T,int N,int max,int min){
  41. srand(time(NULL));
  42. int i,j;
  43. for(i=0;i<N;i++){
  44. for(j=0;j<N;j++){
  45. (*T)[i][j]=rand()%(max+1-min)+min;
  46. }
  47. }
  48. }
  49. void PrintMat(int** T,int N){
  50. int i,j;
  51. for(i=0;i<N;i++){
  52. printf("\n");
  53. for(j=0;j<N;j++){
  54. printf("%d ",T[i][j]);
  55. }
  56. }
  57. }
  58.  
  59. /**
  60. * Counts how many connection does circle have.
  61. * \param S 6x6 matrix.
  62. * \param i 7x7[i][] pos.
  63. * \param j 7x7[][j] pos.
  64. * \returns number of connections.
  65. **/
  66. int con(int** S,int i,int j){
  67. int cmpt=0;
  68. if((i-1>=0)&&(j-1>=0)&& S[i-1][j-1]==2){
  69. cmpt++;
  70. }
  71. if((i-1>=0)&&(j<6)&& S[i-1][j]==1){
  72. cmpt++;
  73. }
  74. if((i<6)&&(j-1>=0)&& S[i][j-1]==1){
  75. cmpt++;
  76. }
  77. if((i<6)&&(j<6)&& S[i][j]==2){
  78. cmpt++;
  79. }
  80. return cmpt;
  81. }
  82.  
  83. int Grids_Init(int*** T,int*** S){
  84. int i,j;
  85. *T=CreatMat(7);
  86. if(*T==NULL){
  87. printf("\nGrids_Init()::Failed to allocate memory.");
  88. return 1;
  89. }
  90. *S=CreatMat(6);
  91. if(*S==NULL){
  92. FreeMat(T,7);
  93. printf("\nGrids_Init()::Failed to allocate memory.");
  94. return 1;
  95. }
  96. RandMat(S,6,2,1);
  97. PrintMat(*S,6);
  98. printf("\n\n");
  99. for(i=0;i<7;i++){
  100. for(j=0;j<7;j++){
  101. (*T)[i][j]=con(*S,i,j);
  102. }
  103. }
  104. PrintMat(*T,7);
  105. return 0;
  106. }
  107.  
  108. int main(){
  109. int **T,**S;
  110. if(Grids_Init(&T,&S)!=0){
  111. printf("\nYibanuy cyka!");
  112. return 1;
  113. }
  114. FreeMat(&S,6);
  115. FreeMat(&T,7);
  116.  
  117. return 0;
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement