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

📄 firstfitview.cpp

📁 装箱问题的首次适应firstfit方法实现。VC开发图形界面显示。每次点击一下运行按钮装入一个箱子。箱子大小随机生成
💻 CPP
字号:
// firstfitView.cpp : implementation of the CFirstfitView class
//

#include "stdafx.h"
#include "firstfit.h"

#include "firstfitDoc.h"
#include "firstfitView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
int M=10;
int Full=120;
int N=0;
/////////////////////////////////////////////////////////////////////////////
// CFirstfitView

IMPLEMENT_DYNCREATE(CFirstfitView, CView)

BEGIN_MESSAGE_MAP(CFirstfitView, CView)
	//{{AFX_MSG_MAP(CFirstfitView)
	ON_WM_CREATE()
	ON_COMMAND(ID_Run, OnRun)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CFirstfitView construction/destruction
CFirstfitView::init()
{
  srand((unsigned) time(NULL));
  for(int i=0;i<10;i++)
  {
	  obj[i]=rand()%12+1;
	  bin[i]=0;
	  locate[i]=30+40*i;
	  obj[i]=obj[i]*10;
  }
  CClientDC dc1(this);
  for(i=0;i<10;i++)
  {
  dc1.Draw3dRect(locate[i],320-obj[i],30,obj[i],RGB(0,0,0),RGB(0,0,0));
     CString str;
	str.Format("%d",obj[i]);
	dc1.SetBkColor(RGB(255,255,255));
	dc1.TextOut(locate[i],300-obj[i],str);
	dc1.SetTextColor(RGB(0,0,0));
  }	
	CString str;
	str="请点击运行按钮单步执行!物品大小会随机生成!";
	dc1.SetBkColor(RGB(255,255,255));
	dc1.TextOut(200,400,str);
	dc1.SetTextColor(RGB(0,0,0));	
	return 0;
}

CFirstfitView::firstfit()
{
	CClientDC dc(this);
	for(int s=0;s<10;s++)
	dc.Draw3dRect(locate[s],30,30,120,RGB(0,0,0),RGB(0,0,0));
	//dc.FillSolidRect(10,10,15,20,RGB(255,0,0));
    
	
	//for(int i=0;i<10;i++)//物体数
	{
	
		for(int j=0;j<10;j++)//箱子数
		{
			if(obj[N]<=(120-bin[j]))
			{
				/*CString str;
	            str.Format("%d",obj[i]);
	             MessageBox(str);*/
				bin[j]=bin[j]+obj[N];
				dc.Draw3dRect(locate[j],150-bin[j],30,obj[N],RGB(150,150,15),RGB(150,150,150));
                dc.FillSolidRect(locate[j],150-bin[j],30,obj[N],RGB(150,150,150));
				CString str1;
				str1.Format("%d",obj[N]);
				dc.SetBkColor(RGB(150,150,150));
				dc.SetTextColor(RGB(255,0,0));
				dc.TextOut(locate[j],150-bin[j],str1);
		        j=0;
				break;
			}
				
		}
		N++;
		
       if(N==10)
	   {
		  MessageBox("finished!");
	   exit(1);
	   }
	
	}
	return 0;
}
CFirstfitView::CFirstfitView()
{
	// TODO: add construction code here

}

CFirstfitView::~CFirstfitView()
{
}

BOOL CFirstfitView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CFirstfitView drawing

void CFirstfitView::OnDraw(CDC* pDC)
{
	CFirstfitDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	init();
	// TODO: add draw code for native data here
}

/////////////////////////////////////////////////////////////////////////////
// CFirstfitView printing

BOOL CFirstfitView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CFirstfitView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CFirstfitView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CFirstfitView diagnostics

#ifdef _DEBUG
void CFirstfitView::AssertValid() const
{
	CView::AssertValid();
}

void CFirstfitView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CFirstfitDoc* CFirstfitView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CFirstfitDoc)));
	return (CFirstfitDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CFirstfitView message handlers

int CFirstfitView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CView::OnCreate(lpCreateStruct) == -1)
		return -1;

	// TODO: Add your specialized creation code here
	
	return 0;
}

void CFirstfitView::OnRun() 
{
	// TODO: Add your command handler code here
	//init();
	firstfit();
}

⌨️ 快捷键说明

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