Advertisement
Wojtekd

Lab3 (4-6)

Mar 8th, 2015
220
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.93 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5.  
  6. /* zadanie 4 */
  7. #define M 5
  8.  
  9. void inicjuj(int tab[][M])
  10. {
  11.     for (int i = 0; i < M; i++)
  12.     {
  13.         for (int j = 0; j < M; j++)
  14.         {
  15.             tab[i][j] = rand() % 201 - 100;
  16.         }
  17.     }
  18. }
  19. void displayArray(int tab[][M])
  20. {
  21.     for (int i = 0; i < M; i++)
  22.     {
  23.         printf("\n");
  24.         for (int j = 0; j < M; j++)
  25.         {
  26.             printf("%d\t", tab[i][j]);
  27.         }
  28.     }
  29.     printf("\n");
  30. }
  31. int wyszukaj_elementy(int tab[][M])
  32. {
  33.     int poprzednik, gornik;
  34.  
  35.     // srednia arytmetyczna
  36.     int srednia = 0, dividend = 0, divisor;
  37.     divisor = M * M;
  38.     for (int i = 0; i < M; i++)
  39.     {
  40.         for (int j = 0; j < M; j++)
  41.         {
  42.             dividend += tab[i][j];
  43.         }
  44.     }
  45.     srednia = dividend / divisor;
  46.     printf("srednia: %d\n", srednia);
  47.  
  48.     // sasiedzi
  49.     for (int i = 0; i < M; i++)
  50.     {
  51.         for (int j = 0; j < M; j++)
  52.         {
  53.             j == 0 ? poprzednik = 0 : poprzednik = tab[i][j - 1];
  54.             i == 0 ? gornik = 0 : gornik = tab[i - 1][j];
  55.  
  56.             if (tab[i][j] + poprzednik == srednia) return 1;
  57.             if (tab[i][j] + gornik == srednia) return 1;
  58.         }
  59.     }
  60.     return 0;
  61. }
  62. int main(void)
  63. {
  64.     int tab[M][M] = { 0 };
  65.  
  66.     displayArray(tab);
  67.  
  68.     printf("%d", wyszukaj_elementy(tab));
  69.  
  70.     inicjuj(tab);
  71.     displayArray(tab);
  72.  
  73.     printf("%d", wyszukaj_elementy(tab));
  74.  
  75.     system("pause");
  76.     return 0;
  77. }
  78.  
  79.  
  80. /* zadanie 5
  81. #define N 7
  82. #define M 5
  83.  
  84. void displayArray(int tab[][M])
  85. {
  86.     for (int i = 0; i < N; i++)
  87.     {
  88.         printf("\n");
  89.         for (int j = 0; j < M; j++)
  90.         {
  91.             printf("%d\t", tab[i][j]);
  92.         }
  93.     }
  94.     printf("\n");
  95. }
  96. void inicjuj(int tab[][M])
  97. {
  98.     for (int i = 0; i < N; i++)
  99.     {
  100.         for (int j = 0; j < M; j++)
  101.         {
  102.             tab[i][j] = rand() % 201 - 100;
  103.         }
  104.     }
  105. }
  106. struct point
  107. {
  108.     int x;
  109.     int y;
  110. };
  111. struct point maxIstniejacyIloraz(int tab[][M])
  112. {
  113.     float iloraz = 0, iloraz_max = -10000.0f;
  114.     int suma_wiersza = 0, suma_kolumny = 0;
  115.     int x, y;
  116.  
  117.     for (int i = 0; i < N; i++)
  118.     {
  119.         for (int j = 0; j < M; j++)
  120.         {
  121.             suma_wiersza = 0;
  122.             suma_kolumny = 0;
  123.             // policz sume i-wiersza
  124.             for (int k = 0; k < M; k++)
  125.             {
  126.                 suma_wiersza += tab[i][k];
  127.             }
  128.             // policz sume j-kolumny
  129.             for (int k = 0; k < N; k++)
  130.             {
  131.                 suma_kolumny += tab[k][j];
  132.             }
  133.             if (suma_kolumny == 0) continue;
  134.             iloraz = suma_wiersza / suma_kolumny;
  135.             printf("\n iloraz == %f\n", iloraz);
  136.             if (iloraz > iloraz_max)
  137.             {
  138.                 iloraz_max = iloraz;
  139.                 y = i;
  140.                 x = j;
  141.             }
  142.         }
  143.     }
  144.     struct point result;
  145.     result.x = x;
  146.     result.y = y;
  147.     return result;
  148. }
  149. int main(void)
  150. {
  151.     srand(time(NULL));
  152.  
  153.     int tab[N][M];
  154.     inicjuj(tab);
  155.     displayArray(tab);
  156.  
  157.     struct point c = maxIstniejacyIloraz(tab);
  158.     printf("%d\t%d\n",c.x, c.y);
  159.  
  160.     system("pause");
  161.     return 0;
  162. }
  163. */
  164.  
  165. /* zadanie 6
  166.  
  167. #define M 5
  168.  
  169. void spiralArray(int tab[][M], int start, int limit, int a0, int r);
  170. void inicjuj_ciagiem_arytmetycznym(int tab[][M], int x0, int r)
  171. {
  172.     spiralArray(tab,0,M,x0,r);
  173. }
  174. void spiralArray(int tab[][M], int start, int limit, int a0, int r)
  175. {
  176.     int row = start, column = start;
  177.     int a = a0;
  178.     while(column < limit)
  179.     {
  180.         tab[row][column] = a;
  181.         if(column + 1 >= limit) break;
  182.         column++;
  183.         a += r;
  184.     }
  185.     while(row < limit)
  186.     {
  187.         tab[row][column] = a;
  188.         if(row + 1 >= limit) break;
  189.         row++;
  190.         a += r;
  191.     }
  192.     while(column >= start)
  193.     {
  194.         tab[row][column] = a;
  195.         if(column - 1 < start) break;
  196.         column--;
  197.         a += r;
  198.     }
  199.     while(row > start)
  200.     {
  201.         tab[row][column] = a;
  202.         if(row - 1 <= start) break;
  203.         row--;
  204.         a += r;
  205.     }
  206.     if(start + 1 > M/2) return;
  207.     a += r;
  208.     start++;
  209.     limit--;
  210.     spiralArray(tab,start,limit,a,r);
  211. }
  212. void displayArray(int tab[][M])
  213. {
  214.     for(int i = 0; i < M; i++)
  215.     {
  216.     printf("\n");
  217.         for(int j = 0; j < M; j++)
  218.         {
  219.         printf("%d\t",tab[i][j]);
  220.         }
  221.     }
  222.     printf("\n");
  223. }
  224. int main(int argc, char** argv)
  225. {
  226.     int tab[M][M] = {
  227.     { 0,0,0,0,0 },
  228.     { 0,0,0,0,0 },
  229.     { 0,0,0,0,0 },
  230.     { 0,0,0,0,0 },
  231.     { 0,0,0,0,0 }
  232.     };
  233.     displayArray(tab);
  234.  
  235.     inicjuj_ciagiem_arytmetycznym(tab,2,2);
  236.     displayArray(tab);
  237.  
  238.     system("pause");
  239.  
  240.     return 0;
  241. }
  242. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement