Смекни!
smekni.com

Обчислювальні методи та застосування ЕОМ (стр. 2 из 2)

Додаток В - Лістинг програми

// 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 – Алгоритмроботипрограми