Guest User

Untitled

a guest
Apr 6th, 2021
74
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <locale>
  4. #include <cmath>
  5.  
  6. using namespace std;
  7.  
  8. int main()
  9. {
  10. // установка для рандома
  11. srand(time(NULL));
  12. // подключение русского языка
  13. setlocale(0, "");
  14. // объявление переменных
  15. double h, x0, x4, y0, y4;
  16. int n;
  17. int** setka;
  18. // ввод шага
  19. cout << "Введите шаг сетки: ";
  20. cin >> h;
  21. // вычисление количества точек
  22. n = 4 / h;
  23. // выделение памяти для сетки
  24. setka = new int* [n];
  25. for (int i = 0; i < n; i++) setka[i] = new int[n];
  26. // заполняем рандомными числами
  27. for (int i = 0; i < n; i++)
  28. {
  29. for (int j = 0; j < n; j++)
  30. {
  31. setka[i][j] = rand() % 1600;
  32. }
  33. }
  34. // заполняем края
  35. setka[0][0] = 0;
  36. setka[0][n - 1] = 1600;
  37. setka[n - 1][0] = 0;
  38. setka[n - 1][n - 1] = 1200;
  39.  
  40. // делаем релаксацию много много раз)
  41. for (int c = 0; c < 100; c++)
  42. {
  43. for (int i = 0; i < n; i++)
  44. {
  45. for (int j = 0; j < n; j++)
  46. {
  47. int sum = 0;
  48. int count = 0;
  49. // наши известные значения трогать не будем
  50. if ((i == 0 && j == 0) || (i == n - 1 && j == n - 1) || (i == 0 && j == n - 1) || (i == n - 1 && j == 0)) continue;
  51. // нахождение суммы
  52. if (i - 1 >= 0)
  53. {
  54. sum += setka[i - 1][j];
  55. count++;
  56. }
  57. if (i + 1 < n)
  58. {
  59. sum += setka[i + 1][j];
  60. count++;
  61. }
  62. if (j - 1 >= 0)
  63. {
  64. sum += setka[i][j - 1];
  65. count++;
  66. }
  67. if (j + 1 < n)
  68. {
  69. sum += setka[i][j + 1];
  70. count++;
  71. }
  72. setka[i][j] = sum / count;
  73. }
  74. }
  75. }
  76. cout << "Сетка распределения температуры: " << endl;
  77. for (int i = 0; i < n; i++)
  78. {
  79. for (int j = 0; j < n; j++)
  80. {
  81. cout << setka[i][j] << " ";
  82. }
  83. cout << endl;
  84. }
  85.  
  86. return 0;
  87. }
RAW Paste Data