📄 call.cpp
字号:
x0=(float)tx*cos((double)rad)-(float)ty*sin((double)rad)+ax;
y0=(float)tx*sin((double)rad)+(float)ty*cos((double)rad)+ay;
sprintf(p,"%g",x0);
SetDlgItemText(hdwnd,X_RAYRESULT,p);
sprintf(p,"%g",y0);
SetDlgItemText(hdwnd,Y_RAYRESULT,p);
return 1;
}
return 1;
}
return 0;
}
struct gengshi *kaifang(UINT a)
{
UINT i;
struct gengshi temp;
temp.xishu=1;
temp.beikaifangshu=a;
for(i=a/2;i>=2;i--)
{
if(!(a%(i*i)))
{
temp.xishu=i;
temp.beikaifangshu=a/(i*i);
break;
}
}
return &temp;
}
struct fenshu *carryout(struct fenshu *a,struct fenshu *b,char action)
{
struct fenshu temp;
UINT i;
if(!a->fenmu || !b->fenmu)
return NULL;
switch(action)
{
case '+':temp.fenmu=a->fenmu*b->fenmu;
temp.fenzi=a->fenzi*b->fenmu+b->fenzi*a->fenmu;
break;
case '-':temp.fenmu=a->fenmu*b->fenmu;
temp.fenzi=a->fenzi*b->fenmu-b->fenzi*a->fenmu;
break;
case '*':temp.fenmu=a->fenmu*b->fenmu;
temp.fenzi=a->fenzi*b->fenzi;
break;
case '/':if(!b->fenzi)
return NULL;
else
{
temp.fenzi=a->fenzi*b->fenmu;
temp.fenmu=a->fenmu*b->fenzi;
break;
}
default:return NULL;
}
for(i=min(temp.fenzi,temp.fenmu);i>=-min(temp.fenzi,temp.fenmu);i--)
{
if(!i || i==1)
continue;
if(!(temp.fenzi%i) && !(temp.fenmu%i))
{
temp.fenzi/=i;
temp.fenmu/=i;
break;
}
}
if(temp.fenzi<0 && temp.fenmu<0)
{
temp.fenzi=-temp.fenzi;
temp.fenmu=-temp.fenmu;
}
return &temp;
}
BOOL isprimary(UINT num)
{
UINT i;
for(i=2;i<=num/2;i++)
{
if(!(num%i))
return 0;
}
return 1;
}
BOOL CALLBACK KaiFangDialog(HWND hdwnd,UINT message,WPARAM wParam,
LPARAM lParam)
{
struct gengshi eqresult;
float tempresult;
float beikaifang;
char temp[20];
char *tempp;
switch(message)
{
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDCANCEL:
SetDlgItemText(hdwnd,BEIKAIFANG,"");
SetDlgItemText(hdwnd,BEIKAIFANGSHU,"");
SetDlgItemText(hdwnd,XISHU,"");
SetDlgItemText(hdwnd,RESULT,"");
return 1;
case IDOK:
GetDlgItemText(hdwnd,BEIKAIFANG,temp,20);
if(sscanf(temp,"%g",&beikaifang)==EOF)
{
MessageBox(hdwnd,"被开方数过大","错误",MB_OK);
return 0;
}
if(beikaifang<0)
{
MessageBox(hdwnd,"被开方数必须为正数!","错误",MB_OK|MB_ICONSTOP);
return 1;
}
else
{
tempresult=sqrt((double)beikaifang);
if(tempresult*tempresult==beikaifang)
{
sprintf(temp,"%g",tempresult);
tempp=strcat("此数能开尽,它的平方根是:",temp);
MessageBox(hdwnd,tempp,"结果",MB_OK);
return 1;
}
else
{
// SetCursor(LoadCursor(hInst,MAKEINTRESOURCE(WAIT)));
eqresult=*kaifang(beikaifang);
sprintf(temp,"%d",eqresult.xishu);
SetDlgItemText(hdwnd,XISHU,temp);
sprintf(temp,"%d",eqresult.beikaifangshu);
SetDlgItemText(hdwnd,BEIKAIFANGSHU,temp);
sprintf(temp,"%g",tempresult);
SetDlgItemText(hdwnd,RESULT,temp);
return 1;
}
return 1;
}
return 0;
}
return 0;
}
return 0;
}
BOOL CALLBACK FenShuDialog(HWND hdwnd,UINT message,WPARAM wParam,
LPARAM lParam)
{
struct fenshu number1,number2;
struct fenshu result;
switch(message)
{
case WM_INITDIALOG:
SendDlgItemMessage(hdwnd,ADD,BM_SETCHECK,1,0);
return 1;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK:
number1.fenzi=GetDlgItemInt(hdwnd,FENZI1,NULL,1);
number1.fenmu=GetDlgItemInt(hdwnd,FENMU1,NULL,1);
number2.fenzi=GetDlgItemInt(hdwnd,FENZI2,NULL,1);
number2.fenmu=GetDlgItemInt(hdwnd,FENMU2,NULL,1);
if(!number1.fenmu || !number2.fenmu)
{
MessageBox(hdwnd,"分母不能为零!","错误",MB_OK|MB_ICONSTOP);
return 1;
}
if(SendDlgItemMessage(hdwnd,ADD,BM_GETCHECK,0,0))
result=*carryout(&number1,&number2,'+');
if(SendDlgItemMessage(hdwnd,SUB,BM_GETCHECK,0,0))
result=*carryout(&number1,&number2,'-');
if(SendDlgItemMessage(hdwnd,MUL,BM_GETCHECK,0,0))
result=*carryout(&number1,&number2,'*');
if(SendDlgItemMessage(hdwnd,DIV,BM_GETCHECK,0,0))
result=*carryout(&number1,&number2,'/');
SetDlgItemInt(hdwnd,RESULTZI,result.fenzi,1);
SetDlgItemInt(hdwnd,RESULTMU,result.fenmu,1);
return 1;
case IDCANCEL:
SetDlgItemText(hdwnd,FENZI1,"");
SetDlgItemText(hdwnd,FENZI2,"");
SetDlgItemText(hdwnd,FENMU1,"");
SetDlgItemText(hdwnd,FENMU2,"");
SetDlgItemText(hdwnd,RESULTZI,"");
SetDlgItemText(hdwnd,RESULTMU,"");
return 1;
}
return 0;
}
return 0;
}
BOOL CALLBACK YueBeiDialog(HWND hdwnd,UINT message,WPARAM wParam,
LPARAM lParam)
{
UINT number1,number2;
UINT i;
switch(message)
{
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK:
// SetCursor(LoadCursor(hInst,MAKEINTRESOURCE(WAIT)));
number1=GetDlgItemInt(hdwnd,NUM1,NULL,0);
number2=GetDlgItemInt(hdwnd,NUM2,NULL,0);
for(i=min(number1,number2);i>=1;i--)
{
if(!(number1%i) && !(number2%i))
{
SetDlgItemInt(hdwnd,YUE,i,0);
break;
}
}
for(i=max(number1,number2);i<=number1*number2;i++)
{
if(!(i%number1) && !(i%number2))
{
SetDlgItemInt(hdwnd,BEI,i,0);
break;
}
}
return 1;
}
return 1;
}
return 0;
}
BOOL CALLBACK IsPrimaryDialog(HWND hdwnd,UINT message,WPARAM wParam,
LPARAM lParam)
{
UINT number,tempnumber;
UINT i;
BOOL *isfail;
char a[100];
char temp[100];
switch(message)
{
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK:
// SetCursor(LoadCursor(hInst,MAKEINTRESOURCE(WAIT)));
number=GetDlgItemInt(hdwnd,ID_INPUT,isfail,0);
if(!isfail)
{
MessageBox(hdwnd,"输入的数过大","错误",MB_OK);
return 0;
}
if(number<=1)
MessageBox(hdwnd,"输入的数必须大于1","错误",MB_OK);
if(isprimary(number))
{
MessageBox(hdwnd,"此数是质数。","结果",MB_OK);
SetDlgItemText(hdwnd,ID_RESULT,"");
return 1;
}
else
{
tempnumber=number;
for(i=2;i<=number/2;i++)
{
while(!(tempnumber%i) && isprimary(i))
{
sprintf(temp,"%u",i);
strcat(a,temp);
strcat(a," ");
if(tempnumber/i!=1)
tempnumber/=i;
else
break;
}
}
SetDlgItemText(hdwnd,ID_RESULT,a);
return 1;
}
return 0;
}
return 0;
}
return 0;
}
void InitTree(void)
{
TV_INSERTSTRUCT tvs;
TV_ITEM tvi;
tvs.hInsertAfter=TVI_LAST;
tvi.mask=TVIF_TEXT;
tvi.pszText="软件说明";
tvs.hParent=TVI_ROOT;
tvs.item=tvi;
htreewnd[0]=TreeView_InsertItem(htreewndctrl,&tvs);
tvi.pszText="线性代数";
tvs.hParent=TVI_ROOT;
tvs.item=tvi;
htreewnd[14]=TreeView_InsertItem(htreewndctrl,&tvs);
tvi.pszText="解行列式";
tvs.hParent=(HTREEITEM)htreewnd[14];
tvs.item=tvi;
htreewnd[8]=TreeView_InsertItem(htreewndctrl,&tvs);
tvi.pszText="二阶";
tvs.hParent=(HTREEITEM)htreewnd[8];
tvs.item=tvi;
htreewnd[1]=TreeView_InsertItem(htreewndctrl,&tvs);
tvi.pszText="三阶";
tvs.hParent=(HTREEITEM)htreewnd[8];
tvs.item=tvi;
htreewnd[2]=TreeView_InsertItem(htreewndctrl,&tvs);
tvi.pszText="四阶";
tvs.hParent=(HTREEITEM)htreewnd[8];
tvs.item=tvi;
htreewnd[3]=TreeView_InsertItem(htreewndctrl,&tvs);
tvi.pszText="解线性方程组";
tvs.hParent=(HTREEITEM)htreewnd[14];
tvs.item=tvi;
htreewnd[5]=TreeView_InsertItem(htreewndctrl,&tvs);
tvi.pszText="二元";
tvs.hParent=(HTREEITEM)htreewnd[5];
tvs.item=tvi;
htreewnd[6]=TreeView_InsertItem(htreewndctrl,&tvs);
tvi.pszText="三元";
tvs.hParent=(HTREEITEM)htreewnd[5];
tvs.item=tvi;
htreewnd[7]=TreeView_InsertItem(htreewndctrl,&tvs);
tvi.pszText="解析几何";
tvs.hParent=TVI_ROOT;
tvs.item=tvi;
htreewnd[9]=TreeView_InsertItem(htreewndctrl,&tvs);
tvi.pszText="点的旋转";
tvs.hParent=(HTREEITEM)htreewnd[9];
tvs.item=tvi;
htreewnd[11]=TreeView_InsertItem(htreewndctrl,&tvs);
tvi.pszText="线段的定比分点";
tvs.hParent=(HTREEITEM)htreewnd[9];
tvs.item=tvi;
htreewnd[12]=TreeView_InsertItem(htreewndctrl,&tvs);
tvi.pszText="二次抛物线";
tvs.hParent=(HTREEITEM)htreewnd[9];
tvs.item=tvi;
htreewnd[13]=TreeView_InsertItem(htreewndctrl,&tvs);
tvi.pszText="概率";
tvs.hParent=TVI_ROOT;
tvs.item=tvi;
htreewnd[10]=TreeView_InsertItem(htreewndctrl,&tvs);
tvi.pszText="排列数与组合数";
tvs.hParent=(HTREEITEM)htreewnd[10];
tvs.item=tvi;
htreewnd[4]=TreeView_InsertItem(htreewndctrl,&tvs);
tvi.pszText="数论";
tvs.hParent=TVI_ROOT;
tvs.item=tvi;
htreewnd[15]=TreeView_InsertItem(htreewndctrl,&tvs);
tvi.pszText="判断质数";
tvs.hParent=(HTREEITEM)htreewnd[15];
tvs.item=tvi;
htreewnd[16]=TreeView_InsertItem(htreewndctrl,&tvs);
tvi.pszText="求最大公约数、最小公倍数";
tvs.hParent=(HTREEITEM)htreewnd[15];
tvs.item=tvi;
htreewnd[17]=TreeView_InsertItem(htreewndctrl,&tvs);
tvi.pszText="分数运算";
tvs.hParent=(HTREEITEM)htreewnd[15];
tvs.item=tvi;
htreewnd[18]=TreeView_InsertItem(htreewndctrl,&tvs);
tvi.pszText="化减二次根式";
tvs.hParent=(HTREEITEM)htreewnd[15];
tvs.item=tvi;
htreewnd[19]=TreeView_InsertItem(htreewndctrl,&tvs);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -