friend VECTOR operator*(MATRIX,VECTOR);
friend VECTOR operator*(LOCAL_MATRIX,VECTOR);
void cp_mas(double*,long);
void print_vect();
void print_vect(char*);
double norm();
void call_memory(long);
void ins_el(double,long);
void ins_el_all(double);
void add_el(double,long);
double get_el(long);
};
//------------------------------------------------------class LOCAL_MATRIX
{
public:
double mas[3][3];
void init_c();//Иницализация матрицы масс
void init_b_loc(field,long);//Иницализация матрицы жёсткости
LOCAL_MATRIX operator+(LOCAL_MATRIX);
LOCAL_MATRIX operator=(LOCAL_MATRIX);
friend LOCAL_MATRIX operator*(double,LOCAL_MATRIX);
friend VECTOR operator*(LOCAL_MATRIX,VECTOR);
};
//-----------------------------------------------------class MATRIX
{
public:
long n;
double *d;
double *gg;
long *ig;
long *jg;
void formier_profil(field);
void add(long,long,double); // добавление [i][j] эл-та
void SST(MATRIX*);
void mul_matrix_vector(double *vect,double *res);
VECTOR solution_x(VECTOR);
VECTOR solution_x_l(VECTOR);
VECTOR solution_x_u(VECTOR);
friend VECTOR operator*(MATRIX,VECTOR);
MATRIX();
MATRIX(const MATRIX&);
~MATRIX();
};
//-----------------------------------------------------class SLAU :public MATRIX
{
public:
VECTOR x;
VECTOR f;
void MSG();
void MSG2();
void BCG();
void LOS();
void LOS2();
void formier_slau(field);
void add_loc_in_global(LOCAL_MATRIX,VECTOR,loc);
};
//--------------------------------------------------------------void generate_slau(SLAU*);
void generate_slau2(SLAU*);
void test_ig_jg(SLAU);
//--------------------------------------------------------------#endif
Файл myclass.cpp
//--------------------------------------------------------------#include <alloc.h>
#include <io.h>
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#pragma hdrstop
#include "myclass.h"
#include "const.h"
//------------function of field-------------------void field::read_data()
{
FILE *f=fopen(FILE_INF2TR,"r");
fscanf(f,"%d",&m_knot.n);
m_knot.mas=(knot*)calloc(m_knot.n,sizeof(knot));
fscanf(f,"%d",&m_loc.n);
m_loc.mas=(loc*)calloc(m_loc.n,sizeof(loc));
fscanf(f,"%d",&m_mat.n);
m_mat.mas=(mat*)calloc(m_mat.n,sizeof(mat));
fscanf(f,"%d",&m_kt1.n);
m_kt1.mas=(kt1*)calloc(m_kt1.n,sizeof(kt1));
fclose(f);
//Считывание узлов
int des=open(FILE_XY,O_RDONLY|O_BINARY);
for(long i=0;i<m_knot.n;i++)
{
read(des,&m_knot.mas[i].x,sizeof(double));
read(des,&m_knot.mas[i].y,sizeof(double));
}
close(des);
//Считывание номеров узлов локальных областей
des=open(FILE_NVTR,O_RDONLY|O_BINARY);
for(long i=0;i<m_loc.n;i++)
{
for(long j=0;j<3;j++)
read(des,&m_loc.mas[i].num_knot[j],sizeof(long));
read(des,&m_loc.mas[i].num_mat,sizeof(long));
//Под вопросом: упорядочены ли узлы? НЕТ!!!
long temp;
for(long k=0;k<3;k++)
for(long l=k+1;l<3;l++)
if(m_loc.mas[i].num_knot[k]>m_loc.mas[i].num_knot[l])
{
temp=m_loc.mas[i].num_knot[k];
m_loc.mas[i].num_knot[k]=m_loc.mas[i].num_knot[l];
m_loc.mas[i].num_knot[l]=temp;
}
}
close(des);
//Считывание 1-х краевых условий
des=open(FILE_KT1,O_RDONLY|O_BINARY);
for(long i=0;i<m_kt1.n;i++)
{
read(des,&m_kt1.mas[i].num,sizeof(long));
//read(des,&m_kt1.mas[i].a,sizeof(long));
}
close(des);
//Считывание материалов
f=fopen(FILE_MU,"r");
FILE *f1=fopen(FILE_TOKU,"r");
int n;
for(long i=0;i<m_mat.n;i++)
{
fscanf(f,"%d",&m_mat.mas[i].num);
fscanf(f,"%lf",&m_mat.mas[i].mu);
char c;
do{
fscanf(f,"%c",&c);
}while(c!='\n'&&!feof(f1));
fscanf(f1,"%d",&n);
if(n!=m_mat.mas[i].num) printf("ERR IN MATERIAL\n");
fscanf(f1,"%lf",&m_mat.mas[i].toku);
do{
fscanf(f1,"%c",&c);
}while(c!='\n'&&!feof(f1));
}
fclose(f);
fclose(f1);
}
//-------------------------------------------double field::mes(long i)
{
double x1=m_knot.mas[m_loc.mas[i].num_knot[0]-1].x;
double x2=m_knot.mas[m_loc.mas[i].num_knot[1]-1].x;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.