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

📄 packgreedydatasetdlg.cpp

📁 师兄做的算法可视化演示程序
💻 CPP
字号:
// PackGreedyDataSetDlg.cpp : implementation file
//

#include "stdafx.h"
#include "AlgorithmicDesign.h"
#include "PackGreedyDataSetDlg.h"
#include "MainFrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CPackGreedyDataSetDlg dialog


CPackGreedyDataSetDlg::CPackGreedyDataSetDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CPackGreedyDataSetDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CPackGreedyDataSetDlg)
	m_price = _T("");
	m_weight = _T("");
	m_totalweight = 0.0;
	m_number = 0;
	//}}AFX_DATA_INIT
}


void CPackGreedyDataSetDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPackGreedyDataSetDlg)
	DDX_Text(pDX, IDC_EDIT_P, m_price);
	DDX_Text(pDX, IDC_EDIT_W, m_weight);
	DDX_Text(pDX, IDC_EDIT_M, m_totalweight);
	DDX_Text(pDX, IDC_EDIT_N, m_number);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CPackGreedyDataSetDlg, CDialog)
	//{{AFX_MSG_MAP(CPackGreedyDataSetDlg)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPackGreedyDataSetDlg message handlers
BOOL CPackGreedyDataSetDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_number=7;
	m_totalweight=15;
	m_price="10,5,15,7,6,18,3";
	m_weight="2,3,5,7,1,4,1";
	UpdateData(FALSE);
	CMainFrame*	pMainFrame	=(CMainFrame*)::AfxGetMainWnd();
	DWORD RoomData=pMainFrame->m_selectnumber;
	if(RoomData==2)
	{
        m_number=3;
		m_totalweight=30;
	    m_price="40,25,25";
 	    m_weight="20,15,15";
		UpdateData(FALSE);
		SetWindowText("FIFO队列式分支限界0/1背包问题参数设置");
	}
	if(RoomData==4)
	{
  	    m_number = 4;
	    m_totalweight = 11;
	    m_price = "6,10,12,13";
        m_weight = "2,4,6,7";
		UpdateData(FALSE);
		SetWindowText("0/1背包问题的动态规划算法参数设置");
	}
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CPackGreedyDataSetDlg::OnOK() 
{
	// TODO: Add extra validation here
	UpdateData(TRUE);
	CMainFrame*	pMainFrame	=(CMainFrame*)::AfxGetMainWnd();
	DWORD RoomData=pMainFrame->m_selectnumber;
	char* checkchar,*checkchar2;
	int i=0;
	//判断物体个数是否正确
	int length=m_price.GetLength();
    checkchar=m_price.GetBuffer(length);
    for(int j=0;j<length;j++)
	{
		if(checkchar[j]==' ')
		{
			memcpy(checkchar+j,checkchar+j+1,length-j);
			length--;
			j--;
		}
	}
    for( j=0;j<length;j++)
		if(checkchar[j]==',')
			if((checkchar[j+1]>='0')&&(checkchar[j+1]<='9'))
		   	   i++;
	if((i+1)!=m_number)
	{
		if(RoomData==2)
           MessageBox("    有物体没有输入价格!","FIFO队列式分支限界0/1背包问题参数设置信息",MB_OK);
	    else if(RoomData==4)
		   MessageBox("    有物体没有输入价格!","0/1背包问题的动态规划算法参数设置信息",MB_OK);
		else
		   MessageBox("    有物体没有输入价格!","0/1背包问题的贪心算法参数设置信息",MB_OK);
		return;
	}
	m_price.Format("%s",checkchar);

    i=0;
	length=m_weight.GetLength();
    checkchar2=m_weight.GetBuffer(length);
    for( j=0;j<length;j++)
	{
		if(checkchar2[j]==' ')
		{
			memcpy(checkchar2+j,checkchar2+j+1,length-j);
			length--;
			j--;
		}
	}
    for( j=0;j<length;j++)
		if(checkchar2[j]==',')
			if((checkchar2[j+1]>='0')&&(checkchar2[j+1]<='9'))
		   	   i++;
	if((i+1)!=m_number)
	{
		if(RoomData==2)
			MessageBox("    有物体没有输入重量!","FIFO队列式分支限界0/1背包问题参数设置信息",MB_OK);
		else if(RoomData==4)
			MessageBox("    有物体没有输入重量!","0/1背包问题的动态规划算法参数设置信息",MB_OK);
		else
			MessageBox("    有物体没有输入重量!","0/1背包问题的贪心算法参数设置信息",MB_OK);
		return;
	}
	m_weight.Format("%s",checkchar2);

	UpdateData(FALSE);
	if(RoomData==0)
	   pMainFrame->pPackgreedyFrame->p_AlgorithmiclistView->AddDemoData(m_number,m_totalweight,checkchar,checkchar2);
    else if(RoomData==2)
	{
		if(m_number>4)
			MessageBox("    物体个数应小于等于4!","FIFO队列式分支限界0/1背包问题参数设置信息",MB_OK);
        pMainFrame->pPackDemarkFrame->p_DemolistView->AddData(m_number);
	 }
	else
		pMainFrame->pPackDynamicFrame->p_AlgorithmiclistView->AddDemoData(m_number,m_totalweight,checkchar,checkchar2);

	CDialog::OnOK();
}

void CPackGreedyDataSetDlg::OnCancel() 
{
	// TODO: Add extra cleanup here
/*	char* checkchar;
	int i=0;
	//判断物体个数是否正确
	int length=m_price.GetLength();
    checkchar=m_price.GetBuffer(length);
    for(int j=0;j<length;j++)
	{
		if(checkchar[j]==' ')
		{
			memcpy(checkchar+j,checkchar+j+1,length-j);
			length--;
			j--;
		}
	}
    for( j=0;j<length;j++)
		if(checkchar[j]==',')
			if((checkchar[j+1]>='0')&&(checkchar[j+1]<='9'))
		   	   i++;
	if((i+1)!=m_number)
	{
		MessageBox("    有物体没有输入价格!","0/1背包问题的贪心算法参数设置信息",MB_OK);
		return;
	}
	m_price.Format("%s",checkchar);
    i=0;
	length=m_weight.GetLength();
    checkchar=m_weight.GetBuffer(length);
    for( j=0;j<length;j++)
	{
		if(checkchar[j]==' ')
		{
			memcpy(checkchar+j,checkchar+j+1,length-j);
			length--;
			j--;
		}
	}
    for( j=0;j<length;j++)
		if(checkchar[j]==',')
			if((checkchar[j+1]>='0')&&(checkchar[j+1]<='9'))
		   	   i++;
	if((i+1)!=m_number)
	{
		MessageBox("    有物体没有输入重量!","0/1背包问题的贪心算法参数设置信息",MB_OK);
		return;
	}
	m_weight.Format("%s",checkchar);

	UpdateData(FALSE);*/
    //CMainFrame*	pMainFrame	=(CMainFrame*)::AfxGetMainWnd();
	//pMainFrame->pPackgreedyFrame->p_AlgorithmiclistView->AddDemoData(m_number,m_totalweight,checkchar,checkchar2);
	CDialog::OnCancel();
}

⌨️ 快捷键说明

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