Advertisement
Wojtekd

zadanie5,6 z LAB4

Mar 23rd, 2015
234
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.15 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <limits.h>
  4. #include <time.h>
  5.  
  6. #define N 4
  7. #define M 5
  8.  
  9. struct point
  10. {
  11.     int x,y;
  12. };
  13.  
  14. int ile_ciagow_arytmetycznych(int **tab)
  15. {
  16.     int r,i,j,result = 0,local_result;
  17.    
  18.     for(int i = 0; i < N; i++)
  19.     {
  20.         local_result = 1;
  21.         r = tab[i][0] + tab[i][1];
  22.         for(int j = 2; j < M; j++)
  23.         {
  24.             if(tab[i][j] - tab[i][j-1] != r)
  25.             {
  26.                 local_result = 0;
  27.                 break;             
  28.             }
  29.         }
  30.         if(local_result)
  31.         {
  32.             result++;
  33.         }
  34.     }
  35.     return result;
  36. }
  37. struct point znajdz_sume_minimalna(int** tab)
  38. {
  39.     int suma, suma_min = INT_MAX;
  40.     struct point result = {0,0};
  41.    
  42.     for(int i = 0; i < N; i++)
  43.     {
  44.         for(int j = 0; j < M; j++)
  45.         {
  46.             // licz sume
  47.             suma = 0;
  48.             int e1,e2,e3,e4,e5,e6,e7,e8;
  49.            
  50.             e1 = (i==0 || j==0) ? 0 :     tab[i-1][j-1];
  51.             e2 = i==0 ? 0 :               tab[i-1][j];
  52.             e3 = (i==0 || j==M-1) ? 0 :   tab[i-1][j+1];           
  53.             e4 = j==M-1 ? 0 :             tab[i][j+1];
  54.             e8 = j==0 ? 0 :               tab[i][j-1];         
  55.             e5 = (i==N-1 || j==M-1) ? 0 : tab[i+1][j+1];
  56.             e6 = i==N-1 ? 0 :             tab[i+1][j];
  57.             e7 = (i==N-1 || j==0) ? 0 :   tab[i+1][j-1];
  58.  
  59.             suma = e1 + e2 + e3 + e4 + e5 + e6 + e7 + e8;
  60.            
  61.             if(suma < suma_min)
  62.             {
  63.                 result.x = j;
  64.                 result.y = i;
  65.                 suma_min = suma;
  66.             }
  67.         }
  68.     }
  69.     return result;
  70. }
  71. int** dawajTablice(int rows, int columns)
  72. {
  73.     int** tab = (int**)malloc(rows*sizeof(int*));
  74.    
  75.     for(int i = 0; i < rows; i++)
  76.     {
  77.         tab[i] = (int*)malloc(columns*sizeof(int));
  78.     }
  79.    
  80.     for(int i = 0; i < N; i++)
  81.     {
  82.         for(int j = 0; j < M; j++)
  83.         {
  84.             tab[i][j] = rand()%201 - 100;
  85.         }
  86.     }  
  87.     return tab;
  88. }
  89.  
  90. void wypiszTablice(int** tab)
  91. {
  92.     for(int i = 0; i < N; i++)
  93.     {
  94.         printf("\n");
  95.         for(int j = 0; j < M; j++)
  96.         {
  97.             printf("%d\t",tab[i][j]);
  98.         }
  99.     }
  100. }
  101. void zwolnijTablice(int** tab)
  102. {
  103.     for(int i = 0; i < N; i++)
  104.     {
  105.         free(tab[i]);
  106.     }
  107.     free(tab);
  108. }
  109. int main( void )
  110. {
  111.     srand(time(NULL));
  112.     int** tablica = dawajTablice(N,M);
  113.     wypiszTablice(tablica);
  114.    
  115.     //struct point result = znajdz_sume_minimalna(tablica);
  116.     //printf("wiersz=%d kolumna=%d",result.y+1,result.x+1);
  117.    
  118.    
  119.    
  120. //  zwolnijTablice(tablica);
  121.        
  122.     return 0;
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement