Advertisement
Guest User

Час 03|04: Матрици

a guest
May 27th, 2018
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.24 KB | None | 0 0
  1. // 1. rekurzija so niza i uslov
  2. void funkcija(int niza[],int n,int k,int i){
  3. if(i==n){
  4.     return;
  5. }else{
  6.     if(niza[i]%k==0){
  7.         printf("%d ",niza[i]);
  8.         return funkcija(niza,n,k,i+1);
  9.     }else{
  10.         return funkcija(niza,n,k,i+1);
  11.         }
  12. }
  13. }
  14.  
  15. int x[9]={1,5,8,3,4,6,7,4,12};
  16. int k = 3;
  17. funkcija(x,9,k,0);
  18. void blagBroj(int n){
  19. int i,flag=0;
  20. int pom=n;
  21. while(n!=0){
  22.     if((n%10)%2!=0){
  23.         flag=1;
  24.         break;
  25.     }
  26.     n=n/10;
  27. }
  28. n=pom;
  29. if(flag==1){
  30.     printf("Ne e blag");
  31. }else{
  32.     printf("Blag e");
  33. }
  34. }
  35.  
  36. // 2. rekurzija blag broj
  37. void blagBroj(int n){
  38. if(n==0){
  39.     printf("Blag e");
  40.     return;
  41. }else{
  42.     if((n%10)%2!=0){
  43.         printf("Ne e blag");
  44.         return;
  45.     }else{
  46.         return blagBroj(n/10);
  47.     }
  48. }
  49. }
  50.  
  51. // blag broj so int
  52. int blagBroj(int n){
  53. if(n==0){
  54.     return 1;
  55. }else{
  56.     if((n%10)%2!=0){
  57.         return 0;
  58.     }else{
  59.         return blagBroj(n/10);
  60.     }
  61. }
  62. }
  63.  
  64. // 3. rekurzija 2 parni cifri
  65. int parniCifri(int n){
  66. if(n==0){
  67.     return 0;
  68. }else{
  69.     if((n%10)%2==0){
  70.         return 1 + parniCifri(n/10);
  71.     }else{
  72.         return parniCifri(n/10);
  73.     }
  74. }
  75. }
  76. // matrici
  77. int main(){
  78. int n;
  79. scanf("%d",&n);
  80. int matrica[n][n];
  81. int i,j;
  82. for(i=0;i<n;i++){
  83.     for(j=0;j<n;j++){
  84.         scanf("%d",&matrica[i][j]);
  85.     }
  86. }
  87.  
  88. // 1. redovi i koloni
  89. int maxK=0;
  90. int maxR=0;
  91. int sumaK=0;
  92. int sumaR=0;
  93. int indexR;
  94. int indexK;
  95. for(i=0;i<n;i++){
  96.         sumaK=0;
  97.         sumaR=0;
  98.     for(j=0;j<n;j++){
  99.         if(i%2==1 && j%2==1){
  100.             if(matrica[i][j]%2!=0){
  101.                 printf("%d ",matrica[i][j]);
  102.             }
  103.         }
  104.       sumaK+=matrica[j][i];
  105.       sumaR+=matrica[i][j];
  106.     }
  107.     if(sumaR>maxR){
  108.         maxR=sumaR;
  109.         indexR=i;
  110.     }
  111.     if(sumaK>maxK){
  112.         maxK=sumaK;
  113.         indexK=i;
  114.     }
  115. }
  116. printf("maxR:%d maxK:%d",indexR,indexK);
  117.  
  118. // 2. zadaca matrica regioni
  119. int max1=matrica[0][0];
  120. int max2=matrica[0][0];
  121. int max3=matrica[0][0];
  122. int max4=matrica[0][0];
  123. for(i=0;i<n;i++){
  124.     for(j=0;j<n;j++){
  125.         if(i>j && i+j<n-1){
  126.             if(matrica[i][j]>max1){
  127.                 max1=matrica[i][j];
  128.             }
  129.         }
  130.         if(i<j && i+j<n-1){
  131.             if(matrica[i][j]>max4){
  132.                 max4=matrica[i][j];
  133.             }
  134.         }
  135.         if(i>j && i+j>n-1){
  136.             if(matrica[i][j]>max2){
  137.                 max2=matrica[i][j];
  138.             }
  139.         }
  140.         if(i<j && i+j>n-1){
  141.             if(matrica[i][j]>max3){
  142.                 max3=matrica[i][j];
  143.             }
  144.         }
  145.  
  146.     }
  147. }
  148. printf("r1:%d r2:%d r3:%d r4:%d",max1,max2,max3,max4);
  149.  
  150. // 3. sosedi na matrica
  151. // dijagonalni sosedi
  152. int k;
  153. scanf("%d",&k);
  154. int novaMatrica[n][n];
  155. int sumaSosedi=0;
  156. for(i=0;i<n;i++){
  157.     for(j=0;j<n;j++){
  158.         sumaSosedi=0;
  159.       //gore levo
  160.       if(i>0 && j>0){
  161.         if(matrica[i-1][j-1]%k==0){
  162.             sumaSosedi+=matrica[i-1][j-1];
  163.         }
  164.       }
  165.       //gore desno
  166.       if(i>0 && j<n-1){
  167.         if(matrica[i-1][j+1]%k==0){
  168.             sumaSosedi+=matrica[i-1][j+1];
  169.         }
  170.       }
  171.       //dole levo
  172.       if(i<n-1 && j>0){
  173.         if(matrica[i+1][j-1]%k==0){
  174.             sumaSosedi+=matrica[i+1][j-1];
  175.         }
  176.       }
  177.       //dole desno
  178.       if(i<n-1 && j<n-1){
  179.         if(matrica[i+1][j+1]%k==0){
  180.             sumaSosedi+=matrica[i+1][j+1];
  181.         }
  182.       }
  183.       novaMatrica[i][j]=sumaSosedi;
  184. }
  185. }
  186. for(i=0;i<n;i++){
  187.     for(j=0;j<n;j++){
  188.         printf("%d ",novaMatrica[i][j]);
  189.     }
  190.     printf("\n");
  191. }
  192.  
  193.  
  194. // gore,dole,levo,desno sosedi
  195. int novaMatrica[n][n];
  196. int sumaSosedi=0;
  197. for(i=0;i<n;i++){
  198.     for(j=0;j<n;j++){
  199.        sumaSosedi=0;
  200.        //sosed gore
  201.        if(i>0 && matrica[i-1][j]>0){
  202.        sumaSosedi+=matrica[i-1][j];
  203.        }
  204.        //sosed levo
  205.        if(j>0 && matrica[i][j-1]>0){
  206.         sumaSosedi+=matrica[i][j-1];
  207.        }
  208.        //sosed dole
  209.        if(i<n-1 && matrica[i+1][j]>0){
  210.         sumaSosedi+=matrica[i+1][j];
  211.        }
  212.        //sosed desno
  213.        if(j<n-1 && matrica[i][j+1]>0){
  214.         sumaSosedi+=matrica[i][j+1];
  215.        }
  216.        novaMatrica[i][j]=sumaSosedi;
  217.     }
  218. }
  219. for(i=0;i<n;i++){
  220.     for(j=0;j<n;j++){
  221.         printf("%d ",novaMatrica[i][j]);
  222.     }
  223.     printf("\n");
  224. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement