Advertisement
tsounakis

prigkaki mou omorfo <3

Mar 19th, 2020
319
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.69 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. float next(int, int, float t[N][M]);
  16.  
  17. int main() {
  18.     float t[N][M], tNew[N][M], tTemp[N][M];
  19.     float* ptr;
  20.     float* ptrNew;
  21.     float* ptrTemp;
  22.     int i, j, k;
  23.     int time;
  24.    
  25.     ptr = &t[0][0];
  26.     ptrNew = &tNew[0][0];
  27.    
  28.     initialize(t);
  29.     printarray(ptr);
  30.    
  31.     ptrTemp = &t[0][0];
  32.    
  33.     while(1)
  34.     {
  35.         printf("Enter an integer for the time: ");
  36.         scanf("%d", &time);
  37.        
  38.         if (time!=0)
  39.         {
  40.             for (i=0; i<N; i++)
  41.             {
  42.                 for (j=0; j<M; j++)
  43.                 {
  44.                     tTemp[i][j] = *(ptrTemp + M*i + j);
  45.                 }
  46.             }
  47.             for (k=0; k<time; k++)
  48.             {
  49.                 for (i=0; i<N; i++)
  50.                 {
  51.                     if (i != 0 && i != N - 1)
  52.                     {
  53.                         for (j=0; j<M; j++)
  54.                         {
  55.                             if (j != 0 && j != M - 1)
  56.                             {
  57.                                 tNew[i][j] = next(i, j, tTemp);
  58.                             }
  59.                         }
  60.                     }
  61.                 }
  62.                 createL(tNew);
  63.                 createR(tNew);
  64.                 createD(tNew);
  65.                 createU(tNew);
  66.                 calcCorners(tNew);
  67.             }
  68.             ptrTemp = &tNew[0][0];
  69.         }
  70.         else
  71.         {
  72.             return 0;
  73.         }
  74.         printarray(ptrNew);
  75.     }
  76.    
  77.     return 0;
  78. }
  79.  
  80. void calcCorners(float t[N][M])
  81. {
  82.     float ur, ul, dr, dl;
  83.     ur = ( right + up ) / 2;
  84.     dr = ( right + down ) / 2;
  85.     ul = ( left + up ) / 2;
  86.     dl = ( left + down ) / 2;
  87.     t[0][0] = ul;
  88.     t[0][M-1] = ur;
  89.     t[N-1][0] = dl;
  90.     t[N-1][M-1] = dr;
  91.     return;
  92. }
  93.  
  94. void createR(float t[N][M])
  95. {
  96.     int i;
  97.     for (i=0; i<N; i++)
  98.     {
  99.         t[i][M-1] = right;
  100.     }
  101.     return;
  102. }
  103.  
  104. void createL(float t[N][M])
  105. {
  106.     int i;
  107.     for (i=0; i<N; i++)
  108.     {
  109.         t[i][0] = left;
  110.     }
  111.     return;
  112. }
  113.  
  114. void createD(float t[N][M])
  115. {
  116.     int i;
  117.     for (i=0; i<M; i++)
  118.     {
  119.         t[N-1][i] = down;
  120.     }
  121.     return;
  122. }
  123.  
  124. void createU(float t[N][M])
  125. {
  126.     int i;
  127.     for (i=0; i<M; i++)
  128.     {
  129.         t[0][i] = up;
  130.     }
  131.     return;
  132. }
  133.  
  134. void initialize(float t[N][M])
  135. {
  136.     int i, j;
  137.     printf("Time: 0\n");
  138.     for (i=0; i<N; i++)
  139.     {
  140.         for (j=0; j<M; j++)
  141.         {
  142.             t[i][j] = 1.0;
  143.         }
  144.     }
  145.     createL(t);
  146.     createR(t);
  147.     createD(t);
  148.     createU(t);
  149.     calcCorners(t);
  150.     return;
  151. }
  152.  
  153. void printarray(float* pointer)
  154. {
  155.     int i, j;
  156.     for (i=0; i<N; i++)
  157.     {
  158.         for (j=0; j<M; j++)
  159.         {
  160.             printf("%.2f\t", *(pointer + M*i + j));
  161.         }
  162.         putchar('\n');
  163.     }
  164.     printf("\n------------------------------------------------------\n");
  165.     return;
  166. }
  167.  
  168. float next(int i, int j, float t[N][M])
  169. {
  170.     float tNewElement;
  171.     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]);
  172.     return tNewElement;
  173. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement