Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdlib>
- #include <iostream>
- #include <locale>
- #include <cmath>
- using namespace std;
- int main()
- {
- // установка для рандома
- srand(time(NULL));
- // подключение русского языка
- setlocale(0, "");
- // объявление переменных
- double h, x0, x4, y0, y4;
- int n;
- int** setka;
- // ввод шага
- cout << "Введите шаг сетки: ";
- cin >> h;
- // вычисление количества точек
- n = 4 / h;
- // выделение памяти для сетки
- setka = new int* [n];
- for (int i = 0; i < n; i++) setka[i] = new int[n];
- // заполняем рандомными числами
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- {
- setka[i][j] = rand() % 1600;
- }
- }
- // заполняем края
- setka[0][0] = 0;
- setka[0][n - 1] = 1600;
- setka[n - 1][0] = 0;
- setka[n - 1][n - 1] = 1200;
- // делаем релаксацию много много раз)
- for (int c = 0; c < 100; c++)
- {
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- {
- int sum = 0;
- int count = 0;
- // наши известные значения трогать не будем
- if ((i == 0 && j == 0) || (i == n - 1 && j == n - 1) || (i == 0 && j == n - 1) || (i == n - 1 && j == 0)) continue;
- // нахождение суммы
- if (i - 1 >= 0)
- {
- sum += setka[i - 1][j];
- count++;
- }
- if (i + 1 < n)
- {
- sum += setka[i + 1][j];
- count++;
- }
- if (j - 1 >= 0)
- {
- sum += setka[i][j - 1];
- count++;
- }
- if (j + 1 < n)
- {
- sum += setka[i][j + 1];
- count++;
- }
- setka[i][j] = sum / count;
- }
- }
- }
- cout << "Сетка распределения температуры: " << endl;
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- {
- cout << setka[i][j] << " ";
- }
- cout << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement