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

📄 testdial.cpp

📁 样本计算器 上完概率课无聊 写的 还是有些校用途吧
💻 CPP
字号:
// testdial.cpp : Defines the entry point for the application.
//

#include "stdafx.h"
#include "defH.h"
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
 	// TODO: Place code here
HANDLE hThread;

DWORD IDThread;

HInstance=hInstance;

iCmdShow=nCmdShow;

hEvent = CreateEvent(NULL,FALSE,FALSE,NULL);

hThread =CreateThread(NULL,NULL,ThreadProc,0,0,&IDThread);

DialogBoxParam(hInstance,(LPCTSTR)IDD_DIALOG1,NULL,DlgProc,NULL);

	return 0;
}


//主窗口消息处理函数

BOOL CALLBACK DlgProc(HWND hwnd,UINT imsg,WPARAM wParam,LPARAM lParam)
{
     
	 HWND hItem;

		HWND hItem3;

	HDC hdc;

	PAINTSTRUCT ps;

    static char* szstritem[]={"样本均值","样本方差","样本标准差","样本K阶原点距","样本K阶中心距"};  

	int i,n;

	char *pf;

	double tmp;

	switch(imsg)
	{
	case WM_INITDIALOG:
       
		SetClassLong(hwnd,GCL_HICON,(long)LoadIcon(HInstance,(LPCTSTR)IDI_ICON1));

    	BringWindowToTop(hwnd);
		
		hItem=GetDlgItem(hwnd,IDC_EDIT_1);

		addr=(WNDPROC)SetWindowLong(hItem,GWL_WNDPROC,(long)EditProc);

        hItem=GetDlgItem(hwnd,IDC_EDIT_2);

		SendMessage(hItem,ES_READONLY,0,0);




			hItem=GetDlgItem(hwnd,IDC_COMBOX);

		for(i=0;i<5;i++)
		{
	    
			SendMessage(hItem,CB_INSERTSTRING,(WPARAM)-1,(LPARAM)szstritem[i]);

		}
	
		SendMessage(hItem,CBS_DROPDOWNLIST,NULL,NULL);
 
       

		return TRUE;

	case WM_PAINT:

        hdc=BeginPaint(hwnd,&ps);

		EndPaint(hwnd,&ps);

		hItem=GetDlgItem(hwnd,IDC_EDIT_1);

		SetFocus(hItem);

//组合框的初始化

	

		return TRUE;


	case WM_COMMAND:

//低位消息

	  switch(LOWORD(wParam))
	  {
	  case IDC_EXIT:

		  EndDialog(hwnd,0);

		  return TRUE;

	  case IDC_ABOUT:  
	
	DialogBoxParam(HInstance,(LPCTSTR)IDD_DIALOG2,hwnd,(DLGPROC)AboutDlgProc,NULL);
	  
	  return TRUE;
	  case IDC_CLEAR:
           
		  hItem=GetDlgItem(hwnd,IDC_EDIT_1);

			SetWindowText(hItem,"");

		  return TRUE;
	  case ID_COUNT:

		hItem=GetDlgItem(hwnd,IDC_EDIT_1);
	
		GetWindowText(hItem,BUFF,1024);

		  //add client code;
	//	SetEvent(hEvent);

				n=DivStr(BUFF);

				pf=BUFF;
			for(i=0;i<n;i++)
			{

			tmp=CharToDou(pf);

			swatch[i]=tmp;
			
		    pf=pf+strlen(pf)+1;
			
			
			}

			hItem=GetDlgItem(hwnd,IDC_EDIT_2);

			average=aver(swatch,n);

			switch(cbIndex)
			{
			case 0:
				
				sprintf(lpStrInput,"%lf",average);

			    SetWindowText(hItem,lpStrInput);

				break;

			case 1:
				
				Variance=Accum(swatch,n,average,2);
				
				sprintf(lpStrInput,"%lf",Variance/(n-1));

				SetWindowText(hItem,lpStrInput);

				break;

			case 2:
	
				Variance=Accum(swatch,n,average,2);

				SqrtVaria=sqrt(Variance/(n-1));

				sprintf(lpStrInput,"%lf",SqrtVaria);

				SetWindowText(hItem,lpStrInput);

				break;
			case 3:

				hItem3=GetDlgItem(hwnd,IDC_EDIT_3);

				GetWindowText(hItem3,lpStrRank,4);

				rank=atoi(lpStrRank);

				sprintf(lpStrInput,"%lf",(Accum(swatch,n,0,rank))/n);

				SetWindowText(hItem,lpStrInput);

				break;


			case 4:

				hItem3=GetDlgItem(hwnd,IDC_EDIT_3);
				
				GetWindowText(hItem3,lpStrRank,4);

				rank=atoi(lpStrRank);
 
				sprintf(lpStrInput,"%lf",Accum(swatch,n,average,rank)/n);
				
				SetWindowText(hItem,lpStrInput);
				 
				break;
			case -1:

				MessageBox(hwnd,"请先选择估计量","Warning",MB_OK|MB_ICONSTOP);

			default:
				break;
			
			}

		return TRUE;
	  
	  }

//高位消息

      switch(HIWORD(wParam))
	  {
	  case CBN_SELCHANGE:
		  // add invoke function;

     cbIndex = SendMessage((HWND)lParam,CB_GETCURSEL,NULL,NULL);
	
		switch(cbIndex)
		{
		
		case 0:
		case 1:
		case 2:
			
			if(stRankEdit!=0)
			{

			hItem=GetDlgItem(hwnd,IDC_EDIT_3);

			ShowWindow(hItem,SW_HIDE);

			hItem=GetDlgItem(hwnd,IDC_STATIC_EDIT);

			ShowWindow(hItem,SW_HIDE);
			
			};
			break;
		case 3:
		case 4:

				hItem=GetDlgItem(hwnd,IDC_EDIT_3);

				ShowWindow(hItem,iCmdShow);

				hItem=GetDlgItem(hwnd,IDC_STATIC_EDIT);

				ShowWindow(hItem,iCmdShow);

				stRankEdit=1;
				break;
		
		
		}
	
	
     

		  return TRUE;
	     //  --
	  }
	   

		return TRUE;

	  
	case WM_CLOSE:

		EndDialog(hwnd,0);
		
		return TRUE;
		
	}

return FALSE;

}

//关于对话框消息处理函数


BOOL CALLBACK AboutDlgProc(HWND hADlg,UINT umsg,WPARAM wParam,LPARAM lParam)
{
	switch(umsg)
	{
	case WM_COMMAND:

		if(LOWORD(wParam)==IDC_ABOUT_OK)
		{
		
    	EndDialog(hADlg,0);

		return TRUE;
		
		}
	
	case WM_CLOSE:

	EndDialog(hADlg,0);

		return TRUE;
	
	}

return FALSE;
}
DWORD WINAPI ThreadProc(LPVOID Param)
{
   // add the work thread code

int i;



for(i=0;i<1026;i++)
{
	BUFF[i]=0;
}

//WaitForSingleObject(hEvent,INFINITE);

      //waitint for button ID_COTTON pushed
	





return 0;
}

int DivStr(char *arr)
{
    
  
  int i;
  char* pf;
  i=0;
  pf=arr;
  do
  {
		pf=strchr(pf,(int)'+');

		if(pf==0) break;

		*(pf)=0;

		pf++;
  
	    i++;
  
  }while((*(pf)!=0));
return (i+1);

}
//关于类传递
LRESULT CALLBACK EditProc(HWND hEdit,UINT imsg,WPARAM wParam,LPARAM lParam)
{

int ASC_KEY;

static int formerkey=0;

ASC_KEY=wParam;


  switch(imsg)
  {
  case WM_CHAR:
	  if((ASC_KEY>=48&&ASC_KEY<58)||(ASC_KEY==32)||(ASC_KEY>=24&&ASC_KEY<=27)||(ASC_KEY==8)||ASC_KEY==(int)'.')
	  {
	   
		
			 
			 if(ASC_KEY==32&&formerkey==32)
			 {

				return TRUE;
			 
			 }
			 else if(ASC_KEY==32&&formerkey!=32)
			 {
			    formerkey=ASC_KEY;

			   	wParam=43;

				 return CallWindowProc(addr,hEdit,imsg,wParam,lParam);
			 
			 }
			 else
			 {
				formerkey=ASC_KEY;

				 return CallWindowProc(addr,hEdit,imsg,wParam,lParam);
			 }

	  }
	  else
	  {
			return FALSE;
	  }
  
  default:break;
  
  }
 return CallWindowProc(addr,hEdit,imsg,wParam,lParam);

}



double CharToDou(char* pp)
{   
	int i;
	int errC=0;
	int intlen;
	int reallen;
	int stlen;
	double output;
	output=0;
	stlen=strlen(pp);
	for(i=0;i<stlen;i++)
	{
	    
	}
 for(i=0;i<=stlen;i++)
 {
	 if(*(pp+i)=='.'||*(pp+i)==0)
	 {
	 intlen=i;
	      for(i=i;i<=stlen;i++)
		  {
	          if(*(pp+i)==0)
			  { 
				  reallen=i-intlen-1;
	 
			  }
		  }
	 }
 }

for(i=0;i<intlen;i++)
{    
	

output=output+pow(10,i)*((int)(*(pp+intlen-1-i)-48));
}
for(i=0;i<reallen;i++)
{

/*	if((*(pp+intlen+1+i)-48)=='.')
	{ 
	
	}*/
output=output+pow(10,-1*(i+1))*((int)(*(pp+intlen+1+i)-48));


}

return output;

}


Average aver(double* arr,int n)
{

int i;
double tmp=0;
for(i=0;i<n;i++)
{
	tmp=*(arr+i)+tmp;
}
return tmp/n;
}







double Accum(double* arr,int n, Average aver,int rank)
{
int i;
double tmp=0.0;
for(i=0;i<n;i++)
{
	 tmp=tmp+pow((*(arr+i)-aver),(double)rank);
 
}
return tmp;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -