Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <conio.h>
- #include <iostream>
- #include <cmath>
- #include <vector>
- #include <fstream>
- #include <stdio.h>
- #include <string>
- using namespace std;
- const double pi = 3.14159265359;
- void transposition_polar(vector < vector < double > > &lambda_bb, vector < vector < double > > &lambda_bn,
- vector < vector < double > > &lambda_bf, vector < vector < double > >&lambda_fb, vector < vector < double > > &lambda_fn,
- vector < vector < double > > &lambda_ff, vector < vector < double > > &lambda_nb, vector < vector < double > > &lambda_nn,
- vector < vector < double > > &lambda_nf, vector < double > square_front, vector < double > square_side, vector < double > square_up,
- vector <vector < double >> volume,int r, int z) {
- for (int i = 1; i < r + 1; ++i) {
- for (int j = 1; j < z + 1; ++j) {
- lambda_bb[i][j] = 0.0;
- lambda_bn[i][j] = square_front[i - 1] / volume[i][0] * 1.0 / 6.0;
- lambda_bf[i][j] = 0.0;
- lambda_fb[i][j] = 0.0;
- lambda_fn[i][j] = square_front[i] / volume[i][0] * 1.0 / 6.0;
- lambda_ff[i][j] = 0.0;
- double prob = 1.0 - lambda_bn[i][j] - lambda_fn[i][j] - 1.0 / 6.0 * square_front[i] / volume[i][0] - 1.0 / 6.0 * square_front[i - 1] / volume[i][0];
- double sum = 2.0 * (square_side[i] + volume[i][0]);
- lambda_nb[i][j] = prob * square_side[i] / sum;
- lambda_nn[i][j] = prob * 2.0 * volume[i][0] / sum;
- lambda_nf[i][j] = prob * square_side[i] / sum;
- }
- }
- }
- void polar(vector < double > &square_front, vector < double > &square_side,
- vector < double > &square_up, vector <vector < double >> &volume, int Mx, double alpha, int z) { //r-layers, alpha-polar angle, h- cylindrical's height(radius)
- double delta_h = 1;
- double sum = 0, sum1 = 0;
- for (int i = 1; i < Mx + 1; ++i)
- square_front[i] = 0.5*alpha*(i *i - (i - 1) * (i - 1));
- for (int i = 1; i < Mx + 1; ++i)
- square_side[i] = delta_h * (i *i - (i - 1) * (i - 1));
- for (int i = 1; i < Mx + 1; ++i)
- square_up[i] = delta_h * i*alpha;
- for (int i = 1; i < Mx + 1; ++i) {
- for (int j = 1; j < alpha + 1; ++j) {
- volume[i][j] = 0.5*alpha*(i *i - (i - 1) * (i - 1))*delta_h;
- }
- }
- }
- void transposition_torus(vector < vector < double > > &lambda_bb, vector < vector < double > > &lambda_bn,
- vector < vector < double > > &lambda_bf, vector < vector < double > >&lambda_fb, vector < vector < double > > &lambda_fn,
- vector < vector < double > > &lambda_ff, vector < vector < double > > &lambda_nb, vector < vector < double > > &lambda_nn,
- vector < vector < double > > &lambda_nf, vector<vector < double >> square_front, vector<vector < double >> square_left,
- vector<vector < double >> square_right, vector<vector < double >> square_up, vector<vector < double >> volume, double r, double sectors) {
- for (int i = 1; i < r + 1; ++i) {
- for (int j = 1; j < sectors + 1; ++j) {
- lambda_bb[i][j] = 0;
- lambda_bn[i][j] = square_front[i - 1][j] / volume[i][j] * 1.0 / 6.0;
- lambda_bf[i][j] = 0.0;
- lambda_fb[i][j] = 0.0;
- lambda_fn[i][j] = square_front[i][j] / volume[i][j] * 1.0 / 6.0;
- lambda_ff[i][j] = 0.0;
- double prob = 1.0 - 1.0 / 6.0 * square_front[i-1][j] / volume[i][j] - 1.0 / 6.0 * square_front[i - 1][j] / volume[i][j];
- double sum = square_left[i][j]+ square_right[i][j] + 2*volume[i][j];
- lambda_nb[i][j] = prob * square_left[i][j] / sum;
- lambda_nn[i][j] = prob * 2.0 * volume[i][j] / sum;
- lambda_nf[i][j] = prob * square_right[i][j] / sum;
- }
- }
- }
- void torus(vector<vector < double >> &square_front, vector<vector < double >> &square_left,
- vector<vector < double >> &square_right, vector<vector < double >> &square_up,
- vector<vector < double >> &volume, double r, double sectors, double R) {
- double alpha = 360 / sectors;
- double sum1 = 0, sum2 = 0;
- double delta_alpha = pi * alpha / 180;
- for (int i = 1; i < r + 1; i++)
- for (int j = 1; j < sectors + 1; j++) {
- square_front[i][j] = i * delta_alpha * 2.0 * pi*(R + i * cos((2 * j - 1)*delta_alpha) / 2.0);
- }
- for (int i = 1; i < r + 1; i++)
- for (int j = 1; j < sectors + 1; j++) {
- square_left[i][j] = (i - (i - 1)) * 2.0 * pi*(R + ((2 * i - 1) / 2.0*cos((j - 1)*delta_alpha)));
- }
- for (int i = 1; i < r + 1; i++)
- for (int j = 1; j < sectors + 1; j++) {
- square_right[i][j] = (i - (i - 1)) * 2.0 * pi*(R + ((2 * i - 1) / 2.0 * cos(j*delta_alpha)));
- }
- for (int i = 1; i < r + 1; i++)
- for (int j = 1; j < sectors + 1; j++) {
- square_up[i][j] = delta_alpha / 2.0*(i *i - (i - 1) * (i - 1)); //delta_alpha*(i-(i-1))*(R+(2*i-1)/2.0*cos(((2*j-1)/2.0)*delta_alpha));
- }
- vector <double> rho(r + 1, 0);
- for (int i = 1; i < r + 1; ++i) {
- rho[i] = 0.67*(2 * i - 1);
- }
- for (int i = 1; i < r + 1; i++) {
- for (int j = 1; j < sectors + 1; j++) {
- volume[i][j] = square_up[i][j] * pi * 2.0*(R + rho[i] * cos(((2 * j - 1) / 2.0)*delta_alpha));
- }
- }
- }
- void spherical(double R, double r, double sectors) {
- double alpha = 360 / sectors;
- double sum1 = 0, sum2 = 0;
- double delta_alpha = pi * alpha / 180;
- vector < vector < double > > square_up(r + 1, vector<double>(sectors + 1, 0));
- vector < vector < double > > square_side(r + 1, vector<double>(sectors + 1, 0));
- vector < vector < double > > square_front(r + 1, vector<double>(sectors + 1, 0));
- for (int i = 1; i < r + 1; i++)
- for (int j = 1; j < sectors + 1; j++) {
- square_up[i][j] = delta_alpha / 2.0*(i *i - (i - 1) * (i - 1));
- }
- for (int i = 1; i < r + 1; i++)
- for (int j = 1; j < sectors + 1; j++) {
- square_side[i][j] = (i * i - (i - 1) * (i - 1))/2.0 * sin((j)*delta_alpha);
- }
- for (int i = 1; i < r + 1; i++)
- for (int j = 1; j < sectors + 1; j++) {
- square_front[i][j] = i*i * -1*cos((j-j-1)*delta_alpha);
- }
- cout << endl << " up "<<endl;
- for (int i = 1; i < r + 1; i++) {
- for (int j = 1; j < sectors + 1; j++)
- cout << square_up[i][j] << " ";
- cout << "\n";
- }
- cout << endl << " side " << endl;
- for (int i = 1; i < r + 1; i++) {
- for (int j = 1; j < sectors + 1; j++)
- cout << square_side[i][j] << " ";
- cout << "\n";
- }
- cout << endl << " front " << endl;
- for (int i = 1; i < r + 1; i++) {
- for (int j = 1; j < sectors + 1; j++)
- cout << square_front[i][j] << " ";
- cout << "\n";
- }
- for (int i = 1; i < sectors + 1; ++i) {
- sum1 += square_front[r][i];
- }
- cout << "all square sphere " << 4.0 * pi*R*R<<" "<<sum1<<endl;
- cout << "all volume sphere " << 4.0 / 3.0*pi*R*R*R<<endl;
- }
- using vector3d = vector<vector<vector<double>>>;
- vector < vector <double>> find_G(vector <double> u, int Mx, int My) {
- vector < vector < double > > G(Mx+2, vector<double>(My+2, 0));
- for (int i = 0; i < Mx+1; ++i) {
- for (int j = 0; j < My + 1; ++j) {
- G[i][j] = exp(-u[i*(My + 2) + j]);
- }
- }
- return G;
- }
- vector3d find_Gforw(vector<vector <double>> G, vector3d &Gforw, int N,
- int Mx, int My, vector < vector < double > > lambda_bb, vector < vector < double > > lambda_bn,
- vector < vector < double > > lambda_bf, vector < vector < double > > lambda_nb,
- vector < vector < double > > lambda_nn, vector < vector < double > > lambda_nf,
- vector < vector < double > > lambda_ff, vector < vector < double > > lambda_fn,
- vector < vector < double > > lambda_fb) {
- for (int j = 1; j < N; ++j) {
- for (int k = 1; k < My + 1; ++k) {
- for (int i = 1; i < Mx + 1; ++i) {
- Gforw[i][k][j] = G[i][k] * (lambda_bb[i][k] * Gforw[i - 1][k - 1][j - 1] + lambda_bn[i][k] * Gforw[i - 1][k][j - 1] + lambda_bf[i][k] * Gforw[i - 1][k + 1][j - 1] +
- lambda_nb[i][k] * Gforw[i][k - 1][j - 1] + lambda_nn[i][k] * Gforw[i][k][j - 1] + lambda_nf[i][k] * Gforw[i][k + 1][j - 1] +
- lambda_fb[i][k] * Gforw[i + 1][k - 1][j - 1] + lambda_fn[i][k] * Gforw[i + 1][k + 1][j - 1] + lambda_ff[i][k] * Gforw[i + 1][k + 1][j - 1]);
- }
- Gforw[Mx + 1][k][j] = Gforw[Mx][k][j]; //граничное условие
- Gforw[0][k][j] = 0;
- }
- }
- return Gforw;
- }
- vector3d find_Gback(vector<vector <double>> G, vector3d &Gback, int N,
- int Mx, int My, vector < vector < double > > lambda_bb, vector < vector < double > > lambda_bn,
- vector < vector < double > > lambda_bf, vector < vector < double > > lambda_nb,
- vector < vector < double > > lambda_nn, vector < vector < double > > lambda_nf,
- vector < vector < double > > lambda_ff, vector < vector < double > > lambda_fn,
- vector < vector < double > > lambda_fb) {
- for (int j = N - 1; j > 0; --j) {
- for (int k = 1; k < My + 1; ++k) {
- for (int i = 1; i < Mx + 1; ++i) {
- Gback[i][k][j - 1] = G[i][k] * (lambda_bb[i][k] * Gback[i - 1][k - 1][j] + lambda_bn[i][k] * Gback[i - 1][k][j] + lambda_bf[i][k] * Gback[i - 1][k + 1][j] +
- lambda_nb[i][k] * Gback[i][k - 1][j] + lambda_nn[i][k] * Gback[i][k][j] + lambda_nf[i][k] * Gback[i][k + 1][j] +
- lambda_fb[i][k] * Gback[i + 1][k - 1][j] + lambda_fn[i][k] * Gback[i + 1][k][j] + lambda_ff[i][k] * Gback[i + 1][k + 1][j]);
- }
- Gback[Mx + 1][k][j - 1] = Gback[Mx + 1][N][j - 1]; //граничное условие
- Gback[0][k][j - 1] = 0;
- }
- }
- return Gback;
- }
- double find_q(vector3d Gforw,vector3d Gback,vector <vector <double>> volume, vector<vector < double>>G,int Mx, int My, int N) {
- double sum = 0, q = 0;
- for (int i = 1; i < Mx + 1; ++i) {
- for (int k = 1; k < My + 1; ++k) {
- sum = 0;
- for (int j = 0; j < N; ++j)
- sum += (Gforw[i][k][j] * Gback[i][k][j]) / G[i][k];
- q += sum*volume[i][k];
- }
- }
- return q;
- }
- vector <vector <double>> find_fi_p(vector3d Gforw, vector3d Gback, vector<vector<double>> G, double q, int Mx, int My, int N, double theta) {
- double sum, teta = theta * N;
- vector < vector < double > > fi_p(Mx + 2, vector<double>(My + 2, 0));
- for (int i = 1; i < Mx + 1; ++i) {
- for (int k = 1; k < My+1; ++k) {
- sum = 0;
- for (int j = 0; j < N; ++j)
- sum += (Gforw[i][k][j] * Gback[i][k][j]) / G[i][k];
- fi_p[i][k] = (teta / q)*sum;
- }
- }
- return fi_p;
- }
- vector<vector<double>> find_fi_w(vector<vector<double>> G, int Mx, int My) {
- vector<vector<double>> fi_w(Mx + 1, vector<double>(My+1,0));
- for (int i = 1; i < Mx + 1; ++i) {
- for (int j = 1; j < My+1; ++j)
- fi_w[i][j] = G[i][j];
- }
- return fi_w;
- }
- vector <double> find_grad(vector<vector<double>> fi_p, vector<vector<double>> fi_w, int Mx, int My) {
- int M = (Mx + 2)*(My + 2);
- vector <double> grad(M + 1, 0);
- for (int i = 1; i < Mx + 1; ++i) {
- for (int k = 1; k < My + 1; ++k)
- grad[i * (My + 2) + k] = -1 + 1.0 / (fi_p[i][k] + fi_w[i][k]);
- }
- return grad;
- }
- vector<double> function(vector <double> u, int My, int Mx, int N, double theta,
- vector<vector<double>> &fi_p, vector<vector<double>> &fi_w, double &q, double xmin,
- double xmax, double ymin,double ymax, vector<vector<double>> volume,
- vector < vector < double > > lambda_bb, vector < vector < double > > lambda_bn,
- vector < vector < double > > lambda_bf, vector < vector < double > > lambda_nb,
- vector < vector < double > > lambda_nn, vector < vector < double > > lambda_nf,
- vector < vector < double > > lambda_ff, vector < vector < double > > lambda_fn,
- vector < vector < double > > lambda_fb) {
- vector3d Gback (Mx + 2, vector <vector<double>>(My + 2, vector<double>(N,0)));
- vector3d Gforw(Mx + 2, vector <vector<double>>(My + 2, vector<double>(N, 0)));
- vector <vector <double>> G(Mx+2 , vector <double> (My+2,0));
- int M = (Mx + 2)*(My + 2);
- vector <double> grad(M, 0);
- G = find_G(u, Mx, My);
- for (int i = xmin; i < xmax + 1; ++i) {
- for (int k = ymin; k < ymax + 1; ++k) {
- Gforw[i][k][0] = G[i][k];
- }
- }
- Gforw = find_Gforw(G, Gforw, N, Mx, My, lambda_bb, lambda_bn, lambda_bf, lambda_nb, lambda_nn, lambda_nf, lambda_ff, lambda_fn, lambda_fb);
- for (int i = 1; i < Mx + 1; ++i) {
- for (int k = 1; k < My + 1; ++k) {
- Gback[i][k][N - 1] = G[i][k];
- }
- }
- Gback = find_Gback(G, Gback, N, Mx, My, lambda_bb, lambda_bn, lambda_bf, lambda_nb, lambda_nn, lambda_nf, lambda_ff, lambda_fn, lambda_fb);
- q = find_q(Gforw, Gback, volume, G, Mx, My, N);
- fi_p = find_fi_p(Gforw, Gback, G, q, Mx, My, N, theta);
- fi_w = find_fi_w(G, Mx, My);
- grad = find_grad(fi_p, fi_w, Mx, My);
- return grad;
- }
- vector < double > product_matrix_on_vector(vector < vector < double > >A, vector <double> grad, int M) {
- vector <double> a(M + 1, 0);
- for (int i = 1; i < M + 1; i++) {
- a[i] = 0;
- for (int j = 1; j < M + 1; j++) {
- a[i] += A[i - 1][j - 1] * grad[j];
- }
- }
- return a;
- }
- vector < double > func_direction(vector < vector < double > > A, vector <double> grad, int M) {
- vector <double> direction(M + 1, 0);
- direction = product_matrix_on_vector(A, grad, M);
- for (int i = 0; i < M + 1; i++)
- direction[i] = -1 * direction[i];
- return direction;
- }
- double length_of_grad(vector <double> grad, int M) {
- double sum = 0;
- for (int i = 1; i < M + 1; ++i) {
- sum += grad[i] * grad[i];
- }
- return sqrt(sum);
- }
- vector < vector < double > > product(vector < vector < double > > A, vector < vector < double > > U, int N) {
- vector < vector < double > > c(N, vector<double>(N, 0));
- for (int i = 0; i < N; i++) {
- for (int j = 0; j < N; j++) {
- c[i][j] = 0;
- for (int t = 0; t < N; t++)
- c[i][j] += A[i][t] * U[t][j];
- }
- }
- return c;
- }
- vector < vector < double > > division_matrix_by_number(vector < vector < double > > matrix, double number, int N) {
- vector < vector < double > > matrix1(N, vector<double>(N, 0));
- for (int i = 0; i < N; i++) {
- for (int j = 0; j < N; j++)
- matrix1[i][j] = matrix[i][j] / number;
- }
- return matrix1;
- }
- double make_number(vector <double> a, vector <double> b, int N) {
- double number = 0;
- for (int i = 0; i < N; i++)
- number += a[i] * b[i];
- return number;
- }
- vector < vector < double > > make_matrix(vector <double> a, vector <double> b, int M) {
- vector < vector < double > > matrix(M, vector<double>(M, 0));
- for (int i = 0; i < M; i++) {
- for (int j = 0; j < M; j++)
- matrix[i][j] = a[i] * b[j];
- }
- return matrix;
- }
- vector < vector < double > > formula(vector < vector < double > > matrix, vector < double > alpha, vector < double > beta, int M) {
- double number1 = 0, number2 = 0;
- vector < vector < double > > matrix1(M, vector<double>(M + 1, 0));
- vector < vector < double > > matrix2(M + 1, vector<double>(M + 1, 0));
- vector < vector < double > > B(M + 1, vector<double>(M + 1, 0));
- vector < vector < double > > C(M + 1, vector<double>(M + 1, 0));
- vector <double> a(M + 1, 0);
- vector <double> b(M + 1, 0);
- matrix1 = make_matrix(alpha, alpha, M);
- number1 = make_number(alpha, beta, M);
- B = division_matrix_by_number(matrix1, number1, M);
- a = product_matrix_on_vector(matrix, beta, M);
- matrix2 = make_matrix(a, beta, M);
- matrix2 = product(matrix2, matrix, M);
- b = product_matrix_on_vector(matrix, beta, M);
- number2 = make_number(b, beta, M);
- C = division_matrix_by_number(matrix2, number2, M);
- for (int i = 0; i < M; i++) {
- for (int j = 0; j < M; j++)
- matrix[i][j] = matrix[i][j] + B[i][j] - C[i][j];
- }
- return matrix;
- }
- int main() {
- double theta, del, nu, max_step, xmin, xmax, ymin, ymax, q = 0, R_g = 0, k = 0;
- int N, Mx, My;
- string key;
- freopen("Text.txt", "r", stdin);
- cin >> N >> Mx >> My >> theta >> nu >> del >> max_step >> key >> xmin >> xmax >> ymin >> ymax;
- int M = (Mx + 2)*(My + 2);
- double teta = N * theta;
- vector3d Gforw(Mx + 1, vector <vector<double>>(My + 1, vector<double>(N+1, 0)));
- vector3d Gback(Mx + 1, vector <vector<double>>(My + 1, vector<double>(N+1, 0)));
- vector < vector < double > > fi_p(Mx + 1, vector<double>(My + 1,0));
- vector < vector < double > > fi_w(Mx + 1, vector<double>(My + 1, 0));
- vector <double> grad(M+2, 0);
- vector <double> direction(M+2, 0);
- vector <double> alpha(M+2, 0);
- vector <double> beta(M+2, 0);
- vector <double> u(M+2, 0);
- vector < vector < double > > A(M, vector<double>(M));
- vector < vector < double > > square_up(Mx + 2, vector<double>(My + 2, 0));
- vector < vector < double > > square_right(Mx + 2, vector<double>(My + 2, 0));
- vector < vector < double > > square_left(Mx + 2, vector<double>(My + 2, 0));
- vector < vector < double > > square_front(Mx + 2, vector<double>(My + 2, 0));
- vector < vector < double > > volume(Mx + 2, vector<double>(My + 2, 0));
- vector < vector < double > > lambda_bb(Mx + 2, vector<double>(My + 2, 0)); // -1, -1
- vector < vector < double > > lambda_bn(Mx + 2, vector<double>(My+ 2, 0)); // -1, 0
- vector < vector < double > > lambda_bf(Mx + 2, vector<double>(My + 2, 0)); // -1, 1
- vector < vector < double > > lambda_fb(Mx + 2, vector<double>(My + 2, 0)); // 1, -1
- vector < vector < double > > lambda_fn(Mx + 2, vector<double>(My + 2, 0)); // 1, 0
- vector < vector < double > > lambda_ff(Mx + 2, vector<double>(My + 2, 0)); // 1, 1
- vector < vector < double > > lambda_nb(Mx + 2, vector<double>(My + 2, 0)); // 0, -1
- vector < vector < double > > lambda_nn(Mx + 2, vector<double>(My + 2, 0)); // 0, 0
- vector < vector < double > > lambda_nf(Mx + 2, vector<double>(My + 2, 0)); // 0, 1
- vector <double> square_up1(Mx + 2);
- vector <double> square_front1(Mx + 2);
- vector <double> square_side(Mx + 2);
- for (int i = 0; i < M; ++i) {
- for (int j = 0; j < M; ++j) {
- if (i == j)
- A[i][j] = 1;
- else A[i][j] = 0;
- }
- }
- if (key == "polar") {
- polar(square_up1, square_side, square_front1, volume, Mx, My, N);
- transposition_polar(lambda_bb, lambda_bn, lambda_bf, lambda_fb, lambda_fn, lambda_ff, lambda_nb, lambda_nn,
- lambda_nf, square_front1, square_side, square_up1, volume, Mx, My);
- }
- else if (key == "torus") {
- torus (square_up, square_right, square_left, square_front, volume, Mx, My, N);
- transposition_torus(lambda_bb, lambda_bn, lambda_bf, lambda_fb, lambda_fn, lambda_ff, lambda_nb, lambda_nn,
- lambda_nf, square_front, square_left, square_right, square_up, volume, Mx, My);
- }
- grad = function(u, My, Mx, N, theta, fi_p, fi_w, q, xmin, xmax, ymin, ymax, volume, lambda_bb, lambda_bn, lambda_bf, lambda_nb,
- lambda_nn, lambda_nf, lambda_ff, lambda_fn, lambda_fb);
- do {
- direction = func_direction(A, grad, M); //to find direction
- /*cout << "direction ";
- for (int i = 0; i < M; i++)
- cout << direction[i] << " ";
- cout << endl;*/
- for (int i = 1; i < M + 1; i++) // old points
- alpha[i - 1] = u[i];
- for (int i = 1; i < M + 1; i++) // new points
- u[i] = u[i] + nu * direction[i];
- for (int i = 1; i < M + 1; i++) // new points - old points
- alpha[i - 1] = u[i] - alpha[i - 1];
- for (int i = 1; i < M + 1; i++) //old values of grad
- beta[i - 1] = grad[i];
- grad = function(u, My, Mx, N, theta, fi_p, fi_w, q, xmin, xmax, ymin, ymax, volume, lambda_bb, lambda_bn, lambda_bf, lambda_nb,
- lambda_nn, lambda_nf, lambda_ff, lambda_fn, lambda_fb);
- for (int i = 1; i < M + 1; i++)
- beta[i - 1] = grad[i] - beta[i - 1];
- //A = formula(A, alpha, beta, M); //Ak=Ak-1 + B - C;
- k++;
- cout << k << " " << length_of_grad(grad, M) << endl;
- } while ((length_of_grad(grad, M) > del) && (k < max_step));
- FILE * txt = fopen("fi_p_out.txt", "w");
- fprintf(txt, "%5d ", (int)My);
- for (int j = 1; j < My + 1; j++) {
- fprintf(txt, " %11d", j);
- }
- fprintf(txt, "\n");
- for (int i = 1; i < Mx + 1; i++) {
- fprintf(txt, "%5d ", i);
- for (int j = 1; j < My + 1; j++) {
- fprintf(txt, " %8.5e", fi_p[i][j]);
- }
- fprintf(txt, "\n");
- }
- fclose(txt);
- _getch();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement