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

📄 flocdlg.cpp

📁 数据结构链表的演示程序
💻 CPP
字号:
// FlocDlg.cpp : implementation file
//

#include "stdafx.h"
#include "LandSoft.h"
#include "FlocDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CFlocDlg dialog


CFlocDlg::CFlocDlg(CWnd* pParent /*=NULL*/,CString minmax)
	: CDialog(CFlocDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CFlocDlg)
	m_nSlipNum = 0;
	m_FlocResult = _T("");
	m_nLong = 0;
	m_MaxMin = minmax;
	//}}AFX_DATA_INIT
}


void CFlocDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CFlocDlg)
	DDX_Control(pDX, IDC_FLOCRESULT, m_FlocEdit);
	DDX_Control(pDX, IDC_EDIT_LONG, m_EditLong);
	DDX_Text(pDX, IDC_SLIPNUMBER, m_nSlipNum);
	DDX_Text(pDX, IDC_FLOCRESULT, m_FlocResult);
	DDX_Text(pDX, IDC_EDIT_LONG, m_nLong);
	DDX_Text(pDX, IDC_STATIC_MINMAX, m_MaxMin);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CFlocDlg, CDialog)
	//{{AFX_MSG_MAP(CFlocDlg)
	ON_BN_CLICKED(IDC_RADIO_SAME, OnRadioSame)
	ON_BN_CLICKED(IDC_RADIO_NOT, OnRadioNotSame)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CFlocDlg message handlers

void CFlocDlg::OnRadioSame() 
{
	UpdateData(TRUE);
	m_FlocResult="";
	UpdateData(FALSE);
	m_EditLong.SetReadOnly(FALSE);
	m_FlocEdit.SetReadOnly(TRUE);
	m_bSame=TRUE;
}

void CFlocDlg::OnRadioNotSame() 
{
	UpdateData(TRUE);
	m_nLong=0;
	UpdateData(FALSE);
	m_EditLong.SetReadOnly(TRUE);
	m_FlocEdit.SetReadOnly(FALSE);
	m_bSame=FALSE;
}

void CFlocDlg::OnOK() 
{
	UpdateData(TRUE);

	if(m_nSlipNum<2)
	{
		AfxMessageBox("分段数应大于 1 , 请重新输入!",MB_OK,NULL);
		return;
	}

	if(!m_bSame)
	{
		CArray <CString,CString> result;
		result.SetSize(m_nSlipNum-1);

		UINT j=0;

		m_FlocResult.TrimLeft();

		for(int i=0;i<m_FlocResult.GetLength();i++)
		{
			char tmp=m_FlocResult.GetAt(i);

			if(tmp>47&&tmp<58)
			{
				result[j]+=tmp;
				continue;
			}

			else if(tmp==32)
			{
				if(m_FlocResult.GetAt(i-1)!=32)
				{
					if(j<(m_nSlipNum-2))
						j++;
					else
						break;
				}

				continue;
			}

			else
			{
				AfxMessageBox("你输入了非法字符,请重新输入!",MB_OK,NULL);
				return;
			}
		}

		if(j<m_nSlipNum-2)
		{
			CString error;
			error.Format("你输入的上界的数量与分段数不符,请重新输入 %d 个上界值!",
				m_nSlipNum-1);
			AfxMessageBox(error,MB_OK,NULL);
			return;
		}

		m_Slips=(long*)malloc(sizeof(long)*m_nSlipNum);

		for(UINT k=0;k<m_nSlipNum-1;k++)
		{
			m_Slips[k]=atol(result[k]);

			if(!m_Slips[k])
			{
				AfxMessageBox("你输入的上界值非法,请重新输入!",MB_OK,NULL);
				return;
			}

			else if(k>0&&m_Slips[k]<m_Slips[k-1])
			{
				AfxMessageBox("你输入的上界值非法,请重新输入!",MB_OK,NULL);
				return;
			}
		}
	}

	else
	{
		if(m_nLong==0)
		{
			AfxMessageBox("请输入每段的长度!",MB_OK,NULL);
			return;
		}

		else
		{
			m_Slips=(long *)malloc(sizeof(long)*m_nSlipNum);
			for(UINT l=1;l<m_nSlipNum;l++)
				m_Slips[l-1]=l*m_nLong;
		}
	}

	CString message,tmpstr;
	message.Format("您的谱分析将有 %d 段, 各分段如下所示:\r\n\r\n",m_nSlipNum);
	tmpstr.Format(" 0 ~ %ld ,  ",m_Slips[0]);
	message+=tmpstr;
	for(UINT m=1;m<m_nSlipNum-1;m++)
	{
		tmpstr.Format(" %ld ~ %ld ,  ",m_Slips[m-1]+1,m_Slips[m]);
		message+=tmpstr;
		if(!(m%4))
			message+="\r\n";
	}
	tmpstr.Format(" %ld 以上。\r\n\r\n",m_Slips[m_nSlipNum-2]);
	message+=tmpstr;
	message+="是否确定?";
	
	int what=AfxMessageBox(message,MB_OKCANCEL,NULL);
	if(what!=IDOK)
		return;
	
	CDialog::OnOK();
}

⌨️ 快捷键说明

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