⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 call.cpp

📁 一个多功能计算器calc
💻 CPP
📖 第 1 页 / 共 3 页
字号:
					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 + -