Advertisement
tsounakis

Mama eisai spiti? Giati se pairnw kai milaei

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