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

📄 numericalanalysis.cpp

📁 数值分析的简单算法VC++实现
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			hwndEdit_y   = CreateWindow(TEXT("EDIT"),  NULL,      
							WS_CHILD | WS_VISIBLE | ES_LEFT | WS_BORDER| \
						    ES_WANTRETURN , 
							0, 0, 0, 0, hWnd,  (HMENU) IDC_EDIT_Y, 
							(HINSTANCE) GetWindowLong(hWnd, GWL_HINSTANCE), 
							NULL);
			//创建编辑框,输入dre_y1的值
			hwndEdit_der_y1   = CreateWindow(TEXT("EDIT"),  NULL,      
							WS_CHILD | WS_VISIBLE | ES_LEFT | WS_BORDER| \
						    ES_WANTRETURN , 
							0, 0, 0, 0, hWnd,  (HMENU) IDC_EDIT_DER, 
							(HINSTANCE) GetWindowLong(hWnd, GWL_HINSTANCE), 
							NULL);
			//创建编辑框,输入der_y2的值
			hwndEdit_der_y2   = CreateWindow(TEXT("EDIT"),  NULL,      
							WS_CHILD | WS_VISIBLE | ES_LEFT | WS_BORDER| \
						    ES_WANTRETURN , 
							0, 0, 0, 0, hWnd,  (HMENU) IDC_EDIT_DER, 
							(HINSTANCE) GetWindowLong(hWnd, GWL_HINSTANCE), 
							NULL);
			//创建编辑框,输入der_y2的值
			hwndEdit_weight   = CreateWindow(TEXT("EDIT"),  NULL,      
							WS_CHILD | WS_VISIBLE | ES_LEFT | WS_BORDER| \
						    ES_WANTRETURN , 
							0, 0, 0, 0, hWnd,  (HMENU) IDC_EDIT_DER, 
							(HINSTANCE) GetWindowLong(hWnd, GWL_HINSTANCE), 
							NULL);
			//创建编辑框,输入所求f(x)的x的值
			hwndEdit_var   = CreateWindow(TEXT("EDIT"),  NULL,      
							WS_CHILD | WS_VISIBLE | ES_LEFT | WS_BORDER| \
						    ES_WANTRETURN , 
							0, 0, 0, 0, hWnd,  (HMENU) IDC_EDIT_VAR, 
							(HINSTANCE) GetWindowLong(hWnd, GWL_HINSTANCE), 
							NULL);
			//创建按钮"ADD"
			hwndButton_add = CreateWindow( TEXT("BUTTON"),   "Add", 
							 WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, 
							 10,  110,   60,  18,   hWnd,   
							 (HMENU)IDC_ADDBUTTON,  (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE),
							 NULL); 
			//创建按钮"DEL"
			hwndButton_del = CreateWindow( TEXT("BUTTON"),   "Del",  
							 WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, 
							 80,   110,   60,  18,   hWnd,   
							 (HMENU)IDC_DELBUTTON,  (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE),
							 NULL); 
			//创建清空按钮"Clear"
			hwndButton_clear = CreateWindow( TEXT("BUTTON"),   "Clear",  
							 WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, 
							 150,  110,   60,  18,   hWnd,   
							 (HMENU)IDC_CLEARBUTTON,  (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE),
							 NULL); 
			//创建清空按钮"Calculate"
			hwndButton_cal = CreateWindow( TEXT("BUTTON"),   "Calculate",  
							 WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, 
							 480,   30,   90,  18,   hWnd,   
							 (HMENU)IDC_CAL,  (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE),
							 NULL); 
			//创建按钮"+"
			hwndButton_zoomin = CreateWindow( TEXT("BUTTON"),   "+", 
							 WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, 
							 580,   30,   18,  18,   hWnd,   
							 (HMENU)IDC_ZOOMIN,  (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE),
							 NULL); 
			//创建按钮"-"
			hwndButton_zoomout = CreateWindow( TEXT("BUTTON"),   "-", 
							 WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, 
							 600,   30,   18,  18,   hWnd,   
							 (HMENU)IDC_ZOOMOUT,  (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE),
							 NULL); 
			//创建输出框
			hwndOutput     = CreateWindow(TEXT("LISTBOX"), NULL, WS_CHILD | WS_VISIBLE | ES_AUTOHSCROLL|
			                 LBS_NOTIFY |WS_VSCROLL |WS_HSCROLL| WS_BORDER ,
						     0, 0, 0, 0,
							 hWnd,(HMENU)IDC_OUTPUT,
							 (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE),
							 NULL);
			EnableWindow(hwndEdit_der_y1,FALSE);
			EnableWindow(hwndEdit_der_y2,FALSE);
			EnableWindow(hwndEdit_weight,FALSE);
			METHOD=LAGRANGE;
            Initialize_data(-1);
			break;
		case WM_PAINT:
		//	230,60,630,290
			rect.top=60;
			rect.left=230;
			rect.bottom=290;
			rect.right=630;
			display(hWnd);
			break;
		case WM_COMMAND:
			wmId    = LOWORD(wParam); 
			wmEvent = HIWORD(wParam); 
			hMenu = GetMenu(hWnd);
			// Parse the menu selections:
			switch (wmId)
			{
				case IDM_ABOUT:
				   DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
				   break;
				case IDM_EXIT:
				   DestroyWindow(hWnd);
				   break;
				case IDM_LAGRANGE:
				   EnableWindow(hwndEdit_der_y1,FALSE);
		           EnableWindow(hwndEdit_der_y2,FALSE);
				   EnableWindow(hwndEdit_weight,FALSE);
				   wsprintf(THE_STATUS,"The Method: Lagrange ");
				   CheckMenuItem(hMenu,IDM_LAGRANGE,MF_CHECKED);
				   CheckMenuItem(hMenu,IDM_NEWTON,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_CUBLISPLINE,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_LEASTSQUARE,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_TRAPEZOID,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_SIMPSON,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_ROMBERG,MF_UNCHECKED);
				   SendMessage(hwndStatic5,WM_SETTEXT,10,(LPARAM)THE_STATUS);
				   METHOD=LAGRANGE;
				   break;
				case IDM_NEWTON:
				   EnableWindow(hwndEdit_der_y1,FALSE);
		           EnableWindow(hwndEdit_der_y2,FALSE);
				   EnableWindow(hwndEdit_weight,FALSE);
				   wsprintf(THE_STATUS,"The Method: NEWTON ");
				   CheckMenuItem(hMenu,IDM_NEWTON,MF_CHECKED);
				   CheckMenuItem(hMenu,IDM_LAGRANGE,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_CUBLISPLINE,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_LEASTSQUARE,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_TRAPEZOID,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_SIMPSON,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_ROMBERG,MF_UNCHECKED);
				   SendMessage(hwndStatic5,WM_SETTEXT,10,(LPARAM)THE_STATUS);
				   METHOD=NEWTON;
				   break;
				case IDM_CUBLISPLINE:
				   EnableWindow(hwndEdit_der_y1,TRUE);
		           EnableWindow(hwndEdit_der_y2,TRUE);
				   EnableWindow(hwndEdit_weight,FALSE);
				   wsprintf(THE_STATUS,"The Method: Cubic Spline ");
				   CheckMenuItem(hMenu,IDM_CUBLISPLINE,MF_CHECKED);
				   CheckMenuItem(hMenu,IDM_LAGRANGE,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_NEWTON,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_LEASTSQUARE,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_TRAPEZOID,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_SIMPSON,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_ROMBERG,MF_UNCHECKED);
				   SendMessage(hwndStatic5,WM_SETTEXT,10,(LPARAM)THE_STATUS);
				   METHOD=CUBLISPLINE;
				   break;
                case IDM_LEASTSQUARE:
				   EnableWindow(hwndEdit_der_y1,FALSE);
		           EnableWindow(hwndEdit_der_y2,FALSE);
				   EnableWindow(hwndEdit_weight,TRUE);
				   SendMessage(hwndList,LB_RESETCONTENT,0,0);
				   Initialize_data(-1);
				   wsprintf(THE_STATUS,"The Method: Method of least squares ");
				   CheckMenuItem(hMenu,IDM_LEASTSQUARE,MF_CHECKED);
				   CheckMenuItem(hMenu,IDM_LAGRANGE,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_NEWTON,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_CUBLISPLINE,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_TRAPEZOID,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_SIMPSON,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_ROMBERG,MF_UNCHECKED);
				   SendMessage(hwndStatic5,WM_SETTEXT,10,(LPARAM)THE_STATUS);
				   METHOD=LEASTSQUARE;
				   break;
				case IDM_TRAPEZOID:
				   EnableWindow(hwndEdit_der_y1,FALSE);
		           EnableWindow(hwndEdit_der_y2,FALSE);
				   EnableWindow(hwndEdit_weight,FALSE);
				   wsprintf(THE_STATUS,"The Method: Complex Trapezoid ");
				   CheckMenuItem(hMenu,IDM_TRAPEZOID,MF_CHECKED);
				   CheckMenuItem(hMenu,IDM_NEWTON,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_CUBLISPLINE,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_LEASTSQUARE,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_LAGRANGE,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_SIMPSON,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_ROMBERG,MF_UNCHECKED);
				   SendMessage(hwndStatic5,WM_SETTEXT,10,(LPARAM)THE_STATUS);
				   METHOD=TRAPEZOID;
				   break;
				case IDM_SIMPSON:
                   EnableWindow(hwndEdit_der_y1,FALSE);
		           EnableWindow(hwndEdit_der_y2,FALSE);
				   EnableWindow(hwndEdit_weight,FALSE);
				   wsprintf(THE_STATUS,"The Method: Complex Simpson ");
				   CheckMenuItem(hMenu,IDM_SIMPSON,MF_CHECKED);
				   CheckMenuItem(hMenu,IDM_NEWTON,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_CUBLISPLINE,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_LEASTSQUARE,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_LAGRANGE,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_TRAPEZOID,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_ROMBERG,MF_UNCHECKED);
				   SendMessage(hwndStatic5,WM_SETTEXT,10,(LPARAM)THE_STATUS);
				   METHOD=SIMPSON;
					break;
				case IDM_ROMBERG:
				   EnableWindow(hwndEdit_der_y1,FALSE);
		           EnableWindow(hwndEdit_der_y2,FALSE);
				   EnableWindow(hwndEdit_weight,FALSE);
				   wsprintf(THE_STATUS,"The Method: Romberg ");
				   CheckMenuItem(hMenu,IDM_ROMBERG,MF_CHECKED);
				   CheckMenuItem(hMenu,IDM_NEWTON,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_CUBLISPLINE,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_LEASTSQUARE,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_LAGRANGE,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_TRAPEZOID,MF_UNCHECKED);
				   CheckMenuItem(hMenu,IDM_SIMPSON,MF_UNCHECKED);
				   SendMessage(hwndStatic5,WM_SETTEXT,10,(LPARAM)THE_STATUS);
				   METHOD=ROMBERG;
					break;
				case IDC_ADDBUTTON:
				   SendMessage(hwndEdit_x,WM_GETTEXT,10,(LPARAM)buffer_x);
				   SendMessage(hwndEdit_y,WM_GETTEXT,10,(LPARAM)buffer_y);
				   SendMessage(hwndEdit_weight,WM_GETTEXT,10,(LPARAM)temp);
				   if(check.checkstring(buffer_x)&&check.checkstring(buffer_y)&&check.checknum(DATA,LEN,atof(buffer_x)))
                   {
					
					if(METHOD==LEASTSQUARE&&check.checkstring(temp))
					{weight[LEN]=atof(temp);
					 DATA[LEN][0]=atof(buffer_x);
				     DATA[LEN++][1]=atof(buffer_y);
					 wsprintf(buffer,"%-10s %10s %10s",buffer_x,buffer_y,temp);
					}
					else
					{
					wsprintf(buffer,"%10s %10s",buffer_x,buffer_y);}
					DATA[LEN][0]=atof(buffer_x);
				    DATA[LEN++][1]=atof(buffer_y);
					SendMessage(hwndList,LB_ADDSTRING,0,(LPARAM)buffer);
					}
				   break;
				case IDC_DELBUTTON:
                   lbIndex=SendMessage(hwndList,LB_GETCURSEL,0,0);
				   Initialize_data(lbIndex);
                   SendMessage(hwndList,LB_DELETESTRING,lbIndex,0);
				   break;
				case IDC_CLEARBUTTON:
				   SendMessage(hwndList,LB_RESETCONTENT,0,0);
				   Initialize_data(-1);
				   break;
				case IDC_ZOOMIN:
				   if(x<1000)
				   {x=x*10;y=y*10;}
				   break;
				case IDC_ZOOMOUT:
				   if(x>0.01)
				   {x=x/10;y=y/10;}
				   break;
				case IDC_CAL:
				   SendMessage(hwndEdit_var,WM_GETTEXT,10,(LPARAM)buffer);
				   if(METHOD==LEASTSQUARE)
				   {SendMessage(hwndOutput,LB_RESETCONTENT,0,0);}
				   switch (METHOD)
				   {
				    case LAGRANGE:
				       if(check.checkstring(buffer))
					   {
					    var=atof(buffer);
				        var=cal.cal(DATA,var);
					    floattostring(var);
					    wsprintf(temp,"f(%s)=%s",buffer,str);
						SendMessage(hwndOutput,LB_RESETCONTENT,0,0);
                        SendMessage(hwndOutput,LB_ADDSTRING,0,(LPARAM)temp);
						var=-5*x;
						for(i=0;i<100;i++)
						{var=var+((double)i)*x/10;
						 DRAW_DATA[i][0]=var;
						 DRAW_DATA[i][1]=cal.cal(DATA,var);
						}
					   }
				    break;
				    case NEWTON:
					   if(check.checkstring(buffer))
					   {var=atof(buffer);
						cal2.cal(DATA,var);
				        var=cal2.display(data_quo);
						SendMessage(hwndOutput,LB_RESETCONTENT,0,0);
						floattostring(var);
					    wsprintf(temp,"f(%s)=%s",buffer,str);
                        SendMessage(hwndOutput,LB_ADDSTRING,0,(LPARAM)temp);
						for(i=0;DATA[i][0]<999999;i++)
						{
						wsprintf(buffer," ");
						for(j=0;DATA[j][0]<=999999&&data_quo[i][j]>-999999&&data_quo[i][j]<999999;j++)
						{floattostring(data_quo[i][j]);
						 wsprintf(buffer,"%s%s  ",buffer,str);}
						 SendMessage(hwndOutput,LB_ADDSTRING,0,(LPARAM)buffer);
						}
						var=-5*x;
						for(i=0;i<100;i++)
						{var=var+(double)i*x/10;
						 DRAW_DATA[i][0]=var;
						 cal2.cal(DATA,var);
						 DRAW_DATA[i][1]=cal2.display(data_quo);
						}
					   }
				    break;
				    case CUBLISPLINE:
					  SendMessage(hwndOutput,LB_RESETCONTENT,0,0);
				      SendMessage(hwndEdit_der_y1,WM_GETTEXT,10,(LPARAM)buffer);
                      der_y1=atof(buffer);
					  SendMessage(hwndEdit_der_y2,WM_GETTEXT,10,(LPARAM)buffer);
					  der_y2=atof(buffer);
                      cal3.cal(DATA,der_y1,der_y2);
					  for(i=1;cal3.m[i]<999999&&cal3.m[i]>-999999;i++)
					  {floattostring(cal3.m[i]);
					   wsprintf(buffer,"m[%d] = %s",i,str);
					   SendMessage(hwndOutput,LB_ADDSTRING,0,(LPARAM)buffer);
					  }
				    break;
				    case LEASTSQUARE:
						SendMessage(hwndOutput,LB_RESETCONTENT,0,0);
                        var=-5*x;
						for(i=0;i<100;i++)
						{var=var+(double)i*x/10;
						 DRAW_DATA[i][0]=var;
						 DRAW_DATA[i][1]=cal4.cal(DATA,weight,x,var);
						}
				    break;
					case TRAPEZOID:
						SendMessage(hwndOutput,LB_RESETCONTENT,0,0);
                        cal5.cal(DATA);
						floattostring(cal5.result);
						wsprintf(buffer,"%s",str);
					    SendMessage(hwndOutput,LB_ADDSTRING,0,(LPARAM)buffer);
					break;
					case SIMPSON:
                        SendMessage(hwndOutput,LB_RESETCONTENT,0,0);
						cal6.cal(DATA);
						floattostring(cal6.result);
                        wsprintf(buffer,"%s",str);
					    SendMessage(hwndOutput,LB_ADDSTRING,0,(LPARAM)buffer);
					break;
					default:;
				   }
				   //DRAW_DATA[0][0]=DRAW_DATA[0][1]=DRAW_DATA[1][1]=DRAW_DATA[0][1]=2;
				   break;
				default:
				   return DefWindowProc(hWnd, message, wParam, lParam);
			}
			display(hWnd);
			InvalidateRect(hWnd,&rect,TRUE);
			break;
		case WM_SIZE:
			MoveWindow(hwndList, 0, 140, 220, 300, TRUE);
			MoveWindow(hwndEdit_x, 60, 0, 90,20 , TRUE);
			MoveWindow(hwndEdit_y, 60, 25, 90,20 , TRUE);
			MoveWindow(hwndEdit_der_y1, 60, 50, 70,20 , TRUE);
			MoveWindow(hwndEdit_der_y2, 140, 50, 70,20 , TRUE);
			MoveWindow(hwndEdit_weight, 120, 80, 70,20 , TRUE);
			MoveWindow(hwndEdit_var, 380, 30, 90,20 , TRUE);
			MoveWindow(hwndOutput, 230, 300, 400,125 , TRUE);
			break;
		case WM_DESTROY:
			PostQuitMessage(0);
			break;
		default:
			return DefWindowProc(hWnd, message, wParam, lParam);
   }
   return 0;
}

// Mesage handler for about box.
LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch (message)
	{
		case WM_INITDIALOG:
				return TRUE;

		case WM_COMMAND:
			if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) 
			{
				EndDialog(hDlg, LOWORD(wParam));
				return TRUE;
			}
			break;
	}
    return FALSE;
}

⌨️ 快捷键说明

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