📄 new text document.txt
字号:
#include "stdafx.h"
#include "hapibird.h"
#include "hapibirdDoc.h"
#include "hapibirdView.h"
#include "dlg.h"
#include "dlg12.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CHapibirdView
IMPLEMENT_DYNCREATE(CHapibirdView, CView)
BEGIN_MESSAGE_MAP(CHapibirdView, CView)
//{{AFX_MSG_MAP(CHapibirdView)
ON_COMMAND(ID_OUTPUT, OnOutput)
ON_COMMAND(ID_INPUT, OnInput)
ON_COMMAND(ID_GRID, OnGrid)
ON_COMMAND(ID_CALCULATE, OnCalculate)
ON_COMMAND(ID_bianjie, Onbianjie)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CHapibirdView construction/destruction
CHapibirdView::CHapibirdView()
{
// TODO: add construction code here
}
CHapibirdView::~CHapibirdView()
{
}
BOOL CHapibirdView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CHapibirdView drawing
void CHapibirdView::OnDraw(CDC* pDC)
{
CHapibirdDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
int x0,y0;
float xx[200],yy[200];
char c1[4];
CString ss;
//坐标原点
x0=200;
y0=80;
//坐标变换
if(sizel>sizew)
{sizex=550/numl;
sizey=550*sizew/(sizel*numw);
for(i=0;i<=numl;i++)
{
xx[i]=i*550/numl;
}
for(i=0;i<=numw;i++)
{
yy[i]=i*sizew*550/(numw*sizel);
}
}
else
{sizey=550/numw;
sizex=550*sizel/(sizew*numw);
for(i=0;i<=numl;i++)
{
xx[i]=i*550*sizel/(numl*sizew);
}
for(i=0;i<=numw;i++)
{
yy[i]=i*550/numw;
}}
//画直线
for(i=0;i<=numw;i++)
{
pDC->MoveTo(x0+xx[0],y0+yy[i]);
pDC->LineTo(x0+xx[numl],y0+yy[i]);
}
for(i=0;i<=numl;i++)
{
pDC->MoveTo(x0+xx[i],y0+yy[0]);
pDC->LineTo(x0+xx[i],y0+yy[numw]);
}
//画斜线
for(i=0;i<=numw-1;i++)
{
for(j=0;j<=numl-1;j++)
{
pDC->MoveTo(x0+xx[j],y0+yy[i]);
pDC->LineTo(x0+xx[j+1],y0+yy[i+1]);
}
}
//画节点圆
for(i=0;i<=numw;i++)
{
for(j=0;j<=numl;j++)
{
r=5;
CRect rcEllipse(x0+xx[j]-r,y0+yy[i]-r,x0+xx[j]+r,y0+yy[i]+r);
pDC->Ellipse(rcEllipse);
}
}
//节点编号
k=1;
for(i=0;i<=numw;i++)
{
for(j=0;j<=numl;j++)
{
itoa(k,c1,10);
ss=c1;
pDC->TextOut(x0-28+xx[j],y0-7+yy[i],ss);
k=k+1;
}
}
//单元编号
m=1;
for(i=0;i<=numw-1;i++)
{
for(j=0;j<=numl-1;j++)
{
itoa(2*m-1,c1,10);
ss=c1;
pDC->TextOut(x0+0.25*sizex+xx[j],y0+0.55*sizey+yy[i],ss);
itoa(2*m,c1,10);
ss=c1;
pDC->TextOut(x0+0.55*sizex+xx[j],y0+0.25*sizey+yy[i],ss);
m=m+1;
}
}
/**/
/*
//画直线
for(i=1;i<=numw+1;i++)
{
pDC->MoveTo(x0+x[1],y0+y[i]);
pDC->LineTo(x0+x[1]+sizel,y0+y[i]);
}
for(i=1;i<=numl+1;i++)
{
pDC->MoveTo(x0+x[i],y0+y[1]);
pDC->LineTo(x0+x[i],y0+y[1]+sizew);
}
//画斜线
for(i=1;i<=numw;i++)
{
for(j=1;j<=numl;j++)
{
pDC->MoveTo(x0+x[j],y0+y[i]);
pDC->LineTo(x0+x[j+1],y0+y[i+1]);
}
}
//画节点圆
for(i=1;i<=numw+1;i++)
{
for(j=1;j<=numl+1;j++)
{
r=5;
CRect rcEllipse(x0+x[j]-r,y0+y[i]-r,x0+x[j]+r,y0+y[i]+r);
pDC->Ellipse(rcEllipse);
}
}
//节点编号
k=1;
for(i=1;i<=numw+1;i++)
{
for(j=1;j<=numl+1;j++)
{
itoa(k,c1,10);
ss=c1;
pDC->TextOut(x0-0.55*sizex+x[j],y0-0.15*sizey+y[i],ss);
k=k+1;
}
}
//单元编号
m=1;
for(i=1;i<=numw;i++)
{
for(j=1;j<=numl;j++)
{
itoa(2*m-1,c1,10);
ss=c1;
pDC->TextOut(x0+0.25*sizex+x[j],y0+0.55*sizey+y[i],ss);
itoa(2*m,c1,10);
ss=c1;
pDC->TextOut(x0+0.55*sizex+x[j],y0+0.25*sizey+y[i],ss);
m=m+1;
}
}
*/
}
/////////////////////////////////////////////////////////////////////////////
// CHapibirdView printing
BOOL CHapibirdView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CHapibirdView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CHapibirdView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CHapibirdView diagnostics
#ifdef _DEBUG
void CHapibirdView::AssertValid() const
{
CView::AssertValid();
}
void CHapibirdView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CHapibirdDoc* CHapibirdView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CHapibirdDoc)));
return (CHapibirdDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CHapibirdView message handlers
void CHapibirdView::OnOutput()
{
float l[200][200],data;
float u[200][200];
fp3=fopen("shiyan3.txt","w");
//输出总刚
for(j=1;j<=jz;j++)
{
fprintf(fp2,"\n");
for(r=1;r<=jz;r++)
{
fprintf(fp3,"%f",kz[j][r]);
}
}
//输出右端
for(j=1;j<=jz;j++)
{
fprintf(fp3,"\n");
fprintf(fp3,"%f\n",f[j]);
}
/* kz[1][1]=1;
kz[1][2]=2;
kz[1][3]=3;
kz[2][1]=2;
kz[2][2]=5;
kz[2][3]=2;
kz[3][1]=3;
kz[3][2]=1;
kz[3][3]=5;
f[1]=14;
f[2]=18;
f[3]=20;
jz=3;
*/ for(j=1;j<=jz;j++)
{
fprintf(fp2,"\n");
for(r=1;r<=jz;r++)
{
fprintf(fp3,"%f",kz[j][r]);
}
}
for(j=1;j<=jz;j++)
{
fprintf(fp3,"\n");
fprintf(fp3,"%f\n",f[j]);
}
//给初值
for(i=1;i<=jz;i++)
{
for(j=1;j<=jz;j++)
{
u[i][j]=0.0;
l[i][j]=0.0;
}
}
/* for(i=1;i<=jz;i++)
{
l[i][i]=1;}
*///LU分解
for(i=1;i<=jz;i++)
{
u[1][i]=kz[1][i];
// }
// for(i=2;i<=jz;i++)
// {
l[i][1]=kz[i][1]/u[1][1];
}
// fprintf(fp3," %f %f\n",kz[1][i],l[i][1]);
for(r=2;r<=jz;r++)
{
for(i=r;i<=jz;i++)
{
data=0.0;
for(k=1;k<=r-1;k++)
{
data=data+l[r][k]*u[k][i];
}
u[r][i]=kz[r][i]-data;
data=0.0;
for(k=1;k<=r-1;k++)
{
data=data+l[i][k]*u[k][r];
}
l[i][r]=(kz[i][r]-data)/u[r][r];
}
}
//输出lu
for(i=1;i<=jz;i++)
{ fprintf(fp3,"\n");
for(j=1;j<=jz;j++)
{
fprintf(fp3," %f",l[i][j]);
}
}
fprintf(fp3,"\n");
for(i=1;i<=jz;i++)
{ fprintf(fp3,"\n");
for(j=1;j<=jz;j++)
{
fprintf(fp3," %f",u[i][j]);
}
}
fprintf(fp3,"\n");
float kk[200][200];
for(j=1;j<=jz;j++)
{
for(m=1;m<=jz;m++)
{
kk[j][m]=0;
for(k=1;k<=jz;k++)
{
kk[j][m]=kk[j][m]+l[j][k]*u[k][m];
}
}
}
for(i=1;i<=jz;i++)
{ fprintf(fp3,"\n");
for(j=1;j<=jz;j++)
{
fprintf(fp3," %f",kk[i][j]);
}
}
y[1]=f[1];
for(i=2;i<=jz;i++)
{ data=0;
for(k=1;k<=i-1;k++)
{
data=data+l[i][k]*y[k];
}
y[i]=f[i]-data;
}
for(j=1;j<=jz;j++)
{
// fprintf(fp3," %f",y[j]);
}
t[jz]=y[jz]/u[jz][jz];
for(i=jz-1;i>=1;i--)
{ data=0.0;
for(k=i+1;k<=jz;k++)
{
data=data+u[i][k]*t[k];
}
t[i]=(y[i]-data)/u[i][i];
}
for(j=1;j<=jz;j++)
{
fprintf(fp3," %d\n",j);
fprintf(fp3," %f\n",t[j]);
}
fclose(fp3);
}
void CHapibirdView::OnInput()
{
dlg DLG;
DLG.DoModal();
sizel=DLG.m_sizel;
sizew=DLG.m_sizew;
numl=DLG.m_numl;
numw=DLG.m_numw;
kk0=DLG.m_kk0;
}
void CHapibirdView::OnGrid()
{
for(i=1;i<=numl+1;i++)
{
x[i]=i*sizel/numl;
}
for(i=1;i<=numw+1;i++)
{
y[i]=i*sizew/numw;
}
//输出节点和坐标
fp=fopen("jdzb.txt","w");
k=1;
for(i=1;i<=numw+1;i++)
{
for(j=1;j<=numl+1;j++)
{
xy[k][1]=x[j];
xy[k][2]=-y[i];
fprintf(fp," %d %f %f\n",k,xy[k][1],xy[k][2]);
k=k+1;
}
}
jz=k-1;
// fprintf(fp," %d\n",jz);
fclose(fp);
//输出单元和对应的节点号
fp1=fopen("dyjd.txt","w");
m=1;
k=1;
for(i=1;i<=numw;i++)
{
for(j=1;j<=numl;j++)
{
e=2*m-1;
ejd[e][1]=k;
ejd[e][2]=k+numl+1;
ejd[e][3]=k+numl+2;
fprintf(fp1," %d %d %d %d\n",e,ejd[e][1],ejd[e][2],ejd[e][3]);
e=2*m;
ejd[e][1]=k;
ejd[e][2]=k+numl+2;
ejd[e][3]=k+1;
fprintf(fp1," %d %d %d %d\n",e,ejd[e][1],ejd[e][2],ejd[e][3]);
k=k+1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -