Advertisement
tsounakis

prigkakiiiii

Mar 23rd, 2020
326
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.38 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define N 10
  4. #define M 20
  5.  
  6. const float right = -5.0, left = 4.0, up = 2.0, down = 3.0;
  7.  
  8. void createL(float t[N][M]);
  9. void createU(float t[N][M]);
  10. void createR(float t[N][M]);
  11. void createD(float t[N][M]);
  12. void calcCorners(float t[N][M]);
  13. void printarray(float*);
  14. void initialize(float t[N][M]);
  15. void denormalize(float t[N][M]);
  16. void loadTemp(float tTemp[N][M], float*);
  17. void normalize(float t[N][M]);
  18. float next(int, int, float t[N][M]);
  19. int round(float);
  20.  
  21. int main() {
  22.     float t[N][M], tNew[N][M], tTemp[N][M];
  23.     float* ptr;
  24.     float* ptrNew;
  25.     float* ptrTemp;
  26.     int i, j, k;
  27.     int time;
  28.    
  29.     ptr = &t[0][0];
  30.     ptrNew = &tNew[0][0];
  31.    
  32.     initialize(t);
  33.     normalize(t);
  34.     printarray(ptr);
  35.     denormalize(t);
  36.    
  37.     while(1)
  38.     {
  39.         ptrTemp = &t[0][0];
  40.         printf("Enter an integer for the time: ");
  41.         scanf("%d", &time);
  42.        
  43.         if (time!=0)
  44.         {
  45.             loadTemp(tTemp, ptrTemp);
  46.             for (k=0; k<time; k++)
  47.             {
  48.                 for (i=0; i<N; i++)
  49.                 {
  50.                     if (i != 0 && i != N - 1)
  51.                     {
  52.                         for (j=0; j<M; j++)
  53.                         {
  54.                             if (j != 0 && j != M - 1)
  55.                             {
  56.                                 tNew[i][j] = next(i, j, tTemp);
  57.                             }
  58.                         }
  59.                     }
  60.                 }
  61.                 createL(tNew);
  62.                 createR(tNew);
  63.                 createD(tNew);
  64.                 createU(tNew);
  65.                 calcCorners(tNew);
  66.                 ptrTemp = &tNew[0][0];
  67.                 loadTemp(tTemp, ptrTemp);
  68.                 /*normalize(tNew);
  69.                 printarray(&tTemp[0][0]);*/
  70.             }
  71.         }
  72.         else
  73.         {
  74.             return 0;
  75.         }
  76.         normalize(tNew);
  77.         printarray(ptrNew);
  78.       /*  printarray(ptrTemp);*/
  79.     }
  80.    
  81.     return 0;
  82. }
  83.  
  84. /* i am tired */
  85.  
  86. int round(float num)
  87. {
  88.     return num < 0 ? num - 0.5 : num + 0.5;
  89. }
  90.  
  91. void denormalize(float t[N][M])
  92. {
  93.     initialize(t);
  94.     return;
  95. }
  96.  
  97. void normalize(float t[N][M])
  98. {
  99.     int i, j, k;
  100.     float min = t[0][0];
  101.     for (i=0; i<N; i++)
  102.     {
  103.         for (j=0; j<M; j++)
  104.         {
  105.             if (t[i][j] < min)
  106.             {
  107.                 min = t[i][j];
  108.             }
  109.         }
  110.     }
  111.     for (i=0; i<N; i++)
  112.     {
  113.         for (j=0; j<M; j++)
  114.         {
  115.             for (k=0; k<10; k++)
  116.             {
  117.                 if (t[i][j] >= (k + min) && t[i][j] < (k + 1 + min))
  118.                 {
  119.                     t[i][j] = k;
  120.                     break;
  121.                 }
  122.             }
  123.         }
  124.     }
  125.     return;
  126. }
  127.  
  128. void loadTemp(float tTemp[N][M], float* ptrTemp)
  129. {
  130.     int i, j;
  131.     for (i=0; i<N; i++)
  132.     {
  133.         for (j=0; j<M; j++)
  134.         {
  135.             tTemp[i][j] = *(ptrTemp + M*i + j);
  136.         }
  137.     }
  138.     return;
  139. }
  140.  
  141. void calcCorners(float t[N][M])
  142. {
  143.     float ur, ul, dr, dl;
  144.     ur = ( right + up ) / 2;
  145.     dr = ( right + down ) / 2;
  146.     ul = ( left + up ) / 2;
  147.     dl = ( left + down ) / 2;
  148.     t[0][0] = ul;
  149.     t[0][M-1] = ur;
  150.     t[N-1][0] = dl;
  151.     t[N-1][M-1] = dr;
  152.     return;
  153. }
  154.  
  155. void createR(float t[N][M])
  156. {
  157.     int i;
  158.     for (i=0; i<N; i++)
  159.     {
  160.         t[i][M-1] = right;
  161.     }
  162.     return;
  163. }
  164.  
  165. void createL(float t[N][M])
  166. {
  167.     int i;
  168.     for (i=0; i<N; i++)
  169.     {
  170.         t[i][0] = left;
  171.     }
  172.     return;
  173. }
  174.  
  175. void createD(float t[N][M])
  176. {
  177.     int i;
  178.     for (i=0; i<M; i++)
  179.     {
  180.         t[N-1][i] = down;
  181.     }
  182.     return;
  183. }
  184.  
  185. void createU(float t[N][M])
  186. {
  187.     int i;
  188.     for (i=0; i<M; i++)
  189.     {
  190.         t[0][i] = up;
  191.     }
  192.     return;
  193. }
  194.  
  195. void initialize(float t[N][M])
  196. {
  197.     int i, j;
  198.     printf("Time: 0\n");
  199.     for (i=0; i<N; i++)
  200.     {
  201.         for (j=0; j<M; j++)
  202.         {
  203.             t[i][j] = 1.0;
  204.         }
  205.     }
  206.     createL(t);
  207.     createR(t);
  208.     createD(t);
  209.     createU(t);
  210.     calcCorners(t);
  211.     return;
  212. }
  213.  
  214. void printarray(float* pointer)
  215. {
  216.     int i, j;
  217.     for (i=0; i<N; i++)
  218.     {
  219.         for (j=0; j<M; j++)
  220.         {
  221.             printf("%.2f\t", *(pointer + M*i + j));
  222.         }
  223.         putchar('\n');
  224.     }
  225.     printf("\n------------------------------------------------------\n");
  226.     return;
  227. }
  228.  
  229. float next(int i, int j, float t[N][M])
  230. {
  231.     float tNewElement;
  232.     tNewElement = 0.1 * (t[i-1][j-1] + t[i-1][j] + t[i-1][j+1] + t[i][j-1] + 2 * t[i][j] + t[i][j+1] + t[i+1][j-1] + t[i+1][j] + t[i+1][j+1]);
  233.     return tNewElement;
  234. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement