Advertisement
Guest User

Untitled

a guest
Jan 10th, 2022
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.36 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