Додаток В - Лістинг програми
// Kurs.cpp : Defines the class behaviors for the application.
//
#include "stdafx.h"
#include "Kurs.h"
#include "MainFrm.h"
#include "ChildFrm.h"
#include ".\kurs.h"
#include "StepDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CKursApp
BEGIN_MESSAGE_MAP(CKursApp, CWinApp)
//{{AFX_MSG_MAP(CKursApp)
ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
ON_COMMAND(ID_FILE_NEW, OnFileNew)
ON_COMMAND(ID_METD1, OnMetd1)
ON_COMMAND(ID_METD2, OnMetd2)
ON_COMMAND(ID_METD3, OnMetd3)
//}}AFX_MSG_MAP
ON_COMMAND(ID_32777, On32777)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CKursApp construction
CKursApp::CKursApp()
: k1(0)
, k2(0)
, k3(0)
{
// TODO: add construction code here,
// Place all significant initialization in InitInstance
}
/////////////////////////////////////////////////////////////////////////////
// The one and only CKursApp object
CKursApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CKursApp initialization
BOOL CKursApp::InitInstance()
{
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.
// Enable3dControls(); // Call this when using MFC in a shared DLL
// Change the registry key under which our settings are stored.
// TODO: You should modify this string to be something appropriate
// such as the name of your company or organization.
SetRegistryKey(_T("Local AppWizard-Generated Applications"));
// To create the main window, this code creates a new frame window
// object and then sets it as the application's main window object.
CZast dlg;
dlg.Create(IDD_DIALOG2);
dlg.ShowWindow(SW_SHOW);
dlg.RedrawWindow();
Sleep(1000);
dlg.ShowWindow(SW_HIDE);
CMDIFrameWnd* pFrame = new CMainFrame;
m_pMainWnd = pFrame;
// create main MDI frame window
if (!pFrame->LoadFrame(IDR_MAINFRAME))
return FALSE;
// try to load shared MDI menus and accelerator table
//TODO: add additional member variables and load calls for
// additional menu types your application may need.
HINSTANCE hInst = AfxGetResourceHandle();
m_hMDIMenu = ::LoadMenu(hInst, MAKEINTRESOURCE(IDR_MAINFRAME));
m_hMDIAccel = ::LoadAccelerators(hInst, MAKEINTRESOURCE(IDR_MAINFRAME));
// The main window has been initialized, so show and update it.
pFrame->ShowWindow(m_nCmdShow);
pFrame->UpdateWindow();
k1 = 15;
k2 = 16;
k3 = 10;
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CKursApp message handlers
int CKursApp::ExitInstance()
{
//TODO: handle additional resources you may have added
if (m_hMDIMenu != NULL)
FreeResource(m_hMDIMenu);
if (m_hMDIAccel != NULL)
FreeResource(m_hMDIAccel);
return CWinApp::ExitInstance();
}
void CKursApp::OnFileNew()
{
CMainFrame* pFrame = STATIC_DOWNCAST(CMainFrame, m_pMainWnd);
// create a new MDI child window
pFrame->CreateNewChild(
RUNTIME_CLASS(CChildFrame), IDR_MAINFRAME, m_hMDIMenu, m_hMDIAccel);
}
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
// No message handlers
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
// App command to run the dialog
void CKursApp::OnAppAbout()
{
CAboutDlg aboutDlg;
aboutDlg.DoModal();
}
/////////////////////////////////////////////////////////////////////////////
// CKursApp message handlers
void CKursApp::OnMetd1()
{
SP_Eylr();
CMainFrame* pFrame = STATIC_DOWNCAST(CMainFrame, m_pMainWnd);
// create a new MDI child window
CMDIChildWnd* ch=pFrame->CreateNewChild(
RUNTIME_CLASS(CChildFrame), IDR_MAINFRAME, m_hMDIMenu, m_hMDIAccel);
ch->SetTitle("╠хЄюф ┼щыхЁр");
}
void CKursApp::OnMetd2()
{
SP_ZEylr();
CMainFrame* pFrame = STATIC_DOWNCAST(CMainFrame, m_pMainWnd);
// create a new MDI child window
CMDIChildWnd* ch=pFrame->CreateNewChild(
RUNTIME_CLASS(CChildFrame), IDR_MAINFRAME, m_hMDIMenu, m_hMDIAccel);
ch->SetTitle("╟тюЁюЄэшщ ьхЄюф ┼щыхЁр");
}
void CKursApp::OnMetd3()
{
SP_Rung();
CMainFrame* pFrame = STATIC_DOWNCAST(CMainFrame, m_pMainWnd);
// create a new MDI child window
CMDIChildWnd* ch=pFrame->CreateNewChild(
RUNTIME_CLASS(CChildFrame), IDR_MAINFRAME, m_hMDIMenu, m_hMDIAccel);
ch->SetTitle("╠хЄюф ╨єэух-╩єЄЄр");
}
void CKursApp::SP_Eylr()
{
double fromx,tox;
double M0,M1,M2;
int i;
CStepDlg dlg;//(IDD_DIALOG3);
dlg.DoModal();
if (h==0) h = 0.05;
fromx= 0;
tox= 1;
n = (tox-fromx)/h + 1;
m_ay[0]=1;
M0 = f(m_ax[0],m_ay[0]);
M1 = f_x(m_ax[0],m_ay[0]);
M2 = f_y(m_ax[0],m_ay[0]);
for (i=0;i<n;i++) m_ax[i] = fromx + i*h;
for (i=1;i<n;i++){
m_ay[i] = m_ay[i-1]+h*f(m_ax[i-1],m_ay[i-1]);
M0 = max(M0,f(m_ax[i],m_ay[i]));
M1 = max(M1,f_x(m_ax[i],m_ay[i]));
M2 = max(M2,f_y(m_ax[i],m_ay[i]));
}
err=(M1+M0*M2)/2*h*h;
}
void CKursApp::SP_Rung()
{
double fromx,tox;
double M0,M1,M2;
int i;
double k0,k1,k2,k3;
CStepDlg dlg;//(IDD_DIALOG3);
dlg.DoModal();
if (h==0) h = 0.05;
fromx= 0;
tox= 1;
n = (tox-fromx)/h + 1;
m_ay[0]=1;
M0 = f(m_ax[0],m_ay[0]);
M1 = f_x(m_ax[0],m_ay[0]);
M2 = f_y(m_ax[0],m_ay[0]);
for (i=0;i<n;i++) m_ax[i] = fromx + i*h;
for (i=1;i<n;i++){
k0=h*f(m_ax[i-1],m_ay[i-1]);
k1=h*f(m_ax[i-1]+h/2,m_ay[i-1]+k0/2);
k2=h*f(m_ax[i-1]+h/2,m_ay[i-1]+k1/2);
k3=h*f(m_ax[i-1]+h,m_ay[i-1]+k2);
m_ay[i] = m_ay[i-1]+(k0+2*k1+2*k2+k3)/6;
M0 = max(M0,f(m_ax[i],m_ay[i]));
M1 = max(M1,f_x(m_ax[i],m_ay[i]));
M2 = max(M2,f_y(m_ax[i],m_ay[i]));
}
err=(M1+M0*M2)/2*h*h*h;
}
void CKursApp::SP_ZEylr()
{
double fromx,tox;
double M0,M1,M2;
int i;
CStepDlg dlg;//(IDD_DIALOG3);
dlg.DoModal();
if (h==0) h = 0.05;
fromx= 0;
tox= 1;
n = (tox-fromx)/h + 1;
m_ay[0]=1;
M0 = f(m_ax[0],m_ay[0]);
M1 = f_x(m_ax[0],m_ay[0]);
M2 = f_y(m_ax[0],m_ay[0]);
for (i=0;i<n;i++) m_ax[i] = fromx + i*h;
for (i=1;i<n;i++){
m_ay[i] = m_ay[i-1]+h*f(m_ax[i-1],fy(m_ax[i],f(m_ax[i-1],m_ay[i-1])));
M0 = max(M0,f(m_ax[i],m_ay[i]));
M1 = max(M1,f_x(m_ax[i],m_ay[i]));
M2 = max(M2,f_y(m_ax[i],m_ay[i]));
}
err=(M1+M0*M2)/2*h*h;
}
void CKursApp::On32777()
{
CHelp dlg;
dlg.DoModal();
}
Додаток A – Алгоритмроботипрограми