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

📄 childview.cpp

📁 一个完整的彩票软件的源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
					between1020++;
					greate15++;
				}
				if (lty.i[j] > 20 && lty.i[j] < 31)
				{
					between2030++;
					greate15++;
				}
			}
		}
		CString str;
		str="┏━━━━━━━━━━┓";
		pListBox->AddString(str);
		str="┠   分段统计结果   ┨";
		pListBox->AddString(str);
		str="┗━━━━━━━━━━┛";
		pListBox->AddString(str);
		CString strSeg;
		strSeg.Format(" < 15: %5d   %3.1f%%",less15,(float)less15/(float)count/8.0*100);
		pListBox->AddString(strSeg);
		strSeg.Format(" >=15: %5d   %3.1f%%",greate15,(float)greate15/(float)count/8.0*100);
		pListBox->AddString(strSeg);
		strSeg.Format("20-30: %5d   %3.1f%%",between2030,(float)between2030/(float)count/8.0*100);
		pListBox->AddString(strSeg);
		strSeg.Format("10-20: %5d   %3.1f%%",between1020,(float)between1020/(float)count/8.0*100);
		pListBox->AddString(strSeg);
		strSeg.Format(" 1-10: %5d   %3.1f%%",between010,(float)between010/(float)count/8.0*100);
		pListBox->AddString(strSeg);
		str="┏━━━━━━━━━━┓";
		pListBox->AddString(str);
		str="┠    AC统计结果   ┨";
		pListBox->AddString(str);
		str="┗━━━━━━━━━━┛";
		pListBox->AddString(str);
		for (i=0; i<30; i++)
		{
			if (acNumber[i]>0)
			{
				str.Format("  AC = %2d   %4d 注",i,acNumber[i]);
				pListBox->AddString(str);
			}
		}
		str.Format("  Ave = %4.2f",dSum/count);
		pListBox->AddString(str);
		str="┏━━━━━━━━━━┓";
		pListBox->AddString(str);
		str="┠     AC值列表    ┨";
		pListBox->AddString(str);
		str="┗━━━━━━━━━━┛";
		pListBox->AddString(str);
		str="   期号       AC值";
		pListBox->AddString(str);
		for ( i=iStart; i<iEnd+1; i++)
		{
			LOTTERY lty=m_array.GetAt(i);
			int ac=lty.GetAC();
			str.Format("  %d    %4d",lty.t.t0,ac);
			pListBox->AddString(str);
		}
}
//------------------奇偶统计--------------------//
void CChildView::EvenOddStatistics(int iStart, int iEnd, CListBox *pListBox)
{
	if (pListBox->GetCount())
		pListBox->ResetContent();
	{
		int even=0,odd=0,s_even=0,s_odd=0;
		int singleven[8];
		int s_singleven[9];
		ZeroMemory((void*)singleven,sizeof(int)*8);
		ZeroMemory((void*)s_singleven,sizeof(int)*9);
		int ItemCount=(iEnd - iStart) + 1;
		for (int i=iStart; i<iEnd+1; i++)
		{
			LOTTERY lty=m_array.GetAt(i);
			int e=0,s=0;
			for (int j=1; j<8; j++)
			{
				if (lty.i[j]%2) {even++;s_even++;e++;s++;}
				else {odd++;s_odd++;}
			}
			singleven[e]++;
			if (lty.i[8]%2) {s_even++;s++;}
			else {s_odd++;}
			s_singleven[s]++;
		}
		CString str;
		str="┏━━━━━━━━━━━━━━━━━━┓";
		pListBox->AddString(str);
		str="┠         不含特别号码         ┨";
		pListBox->AddString(str);
		str="┗━━━━━━━━━━━━━━━━━━┛";
		pListBox->AddString(str);
		str.Format(" 偶/奇:%5d/%5d   理论概率   实际概率",odd,even);
		pListBox->AddString(str);
		for (i=0; i<8; i++)
		{
			str.Format("%3d奇%3d偶:%5d 注   %6.3f%%   %6.3f%%",i,7-i,singleven[i],100.00*C_N_M(15,i)*C_N_M(15,7-i)/C_30_7,100.000*singleven[i]/m_array.GetSize());
			pListBox->AddString(str);
		}
		str="┏━━━━━━━━━━━━━━━━━━┓";
		pListBox->AddString(str);
		str="┠         包含特别号码         ┨";
		pListBox->AddString(str);
		str="┗━━━━━━━━━━━━━━━━━━┛";
		pListBox->AddString(str);
		str.Format(" 偶/奇:%5d/%5d   理论概率   实际概率",s_odd,s_even);
		pListBox->AddString(str);
		for (i=0; i<9; i++)
		{
			str.Format("%3d奇%3d偶:%5d 注   %6.3f%%   %6.3f%%",i,8-i,s_singleven[i],100.00*C_N_M(15,i)*C_N_M(15,8-i)/C_30_8,100.000*s_singleven[i]/m_array.GetSize());
			pListBox->AddString(str);
		}
	}
}
//------------------概率统计--------------------//
void CChildView::FrequencyStatistics(int iStart, int iEnd, CListCtrl *pListCtrl,CListBox *pListBox)
{
		if (pListCtrl->GetItemCount())
			pListCtrl->DeleteAllItems();
		else
		{
			pListCtrl->InsertColumn(0,"号码",LVCFMT_CENTER,40);
			pListCtrl->InsertColumn(1,"频率",LVCFMT_LEFT,40);
			pListCtrl->InsertColumn(2," % ",LVCFMT_LEFT,45);
		}
		UINT freq[30];
		ZeroMemory((BYTE*)freq,sizeof(UINT)*30);
		int ItemCount=(iEnd - iStart) + 1;
		LOTTERY lty;
		for (int i=iStart; i<iEnd+1; i++)
		{
			lty=m_array.GetAt(i);
			for (int j=1; j<9; j++)
			{
				freq[lty.i[j]-1]++;
			}
		}
		if (pListBox)
		{
			CString strTemp;
			for (int i=iStart; i<iEnd+1; i++)
			{
				UINT sum=0;
				lty=m_array.GetAt(i);
				for (int j=1; j<8; j++)
				{
					sum+=freq[lty.i[j]-1];
				}
				strTemp.Format("%d     %5.3f",lty.t.t0,(double)sum/(double)ItemCount);
				pListBox->AddString(strTemp);
			}
			for (i=0; i<30; i++)
			{
				m_dFreq[i]=((double)freq[i])/((double)ItemCount);
			}
		}
		UINT number[30];
		for (i=0; i<30; i++)
		{
			number[i]=i+1;
		}
		for (i=0; i<30; i++)
			for (int j=i+1; j<30; j++)
			{
				if (freq[i]>freq[j])
				{
					UINT temp=freq[i];
					freq[i]=freq[j];
					freq[j]=temp;
					temp=number[i];
					number[i]=number[j];
					number[j]=temp;
				}
			}
		for (i=0; i<30; i++)
		{
			char text[5];
			pListCtrl->InsertItem(0,NULL);
			sprintf(text,"%2d\0",number[i]);
			pListCtrl->SetItemText(0,0,text);
			sprintf(text,"%d\0",freq[i]);
			pListCtrl->SetItemText(0,1,text);
			sprintf(text,"%04.3f\0",((float)freq[i]/(float)ItemCount));
			pListCtrl->SetItemText(0,2,text);
		}
}
//------------------概率统计--------------------//
void CChildView::FrequencyStatistics(int iStart, int order)
{
	FREQUENCY *pFreq=&(m_pFreq[order]);
	ZeroMemory((BYTE*)pFreq,sizeof(FREQUENCY));
	LOTTERY lty;
	for (unsigned int i=iStart; i<iStart+m_iWidth; i++)
	{
		lty=m_array.GetAt(i);
		for (int j=1; j<9; j++)
		{
			pFreq->f[lty.i[j]-1]++;
		}

	}
	if (iStart==0)
	{//计算预测走向
		ZeroMemory(&(m_pFreq[m_array.GetSize()]),sizeof(FREQUENCY));
		for (unsigned int i=iStart; i<iStart+m_iWidth-1; i++)
		{
			lty=m_array.GetAt(i);
			for (int j=1; j<9; j++)
			{
				m_pFreq[m_array.GetSize()].f[lty.i[j]-1]++;
			}

		}
	}

}
//------------------概率统计--------------------//
void CChildView::FrequencyStatistics(int iStart, int iEnd,FREQUENCY *freq)
{
	ZeroMemory((BYTE*)freq,sizeof(FREQUENCY));
	LOTTERY lty;
	for (int i=iStart; i<iStart+iEnd; i++)
	{
		lty=m_array.GetAt(i);
		for (int j=1; j<9; j++)
		{
			freq->f[lty.i[j]-1]++;
		}

	}
}
//----------------相关统计-----------------//
void CChildView::RelationStatistics(int iStart, int iEnd, CListCtrl *pListCtrl)
{
		if (pListCtrl->GetItemCount())
			pListCtrl->DeleteAllItems();
		else
		{
			pListCtrl->InsertColumn(0," ",LVCFMT_CENTER,20);
			for (int i=1; i<31; i++)
			{
				CString str;
				str.Format("%d",i);
				pListCtrl->InsertColumn(i,str,LVCFMT_CENTER,25);
			}
		}
		for (int i=0; i<30; i++)
		{
			CString str;
			str.Format("%d",i+1);
			pListCtrl->InsertItem(i,NULL);
			pListCtrl->SetItemText(i,0,str);
		}
		UINT rel[31][31];
		ZeroMemory(rel,sizeof(UINT)*31*31);
		for (i=iStart; i<iEnd+1; i++)
		{
			LOTTERY lty=m_array.GetAt(i);
			for (int j=1; j<9; j++)
			{
				for (int k=j+1; k<9; k++)
				{
					rel[lty.i[j]][lty.i[k]]++;
					rel[lty.i[k]][lty.i[j]]++;
				}
			}
		}
		for (int j=1; j<31; j++)
		{
			for (int k=1; k<31; k++)
			{
				CString str;
				str.Format("%d",rel[j][k]);
				pListCtrl->SetItemText(j-1,k,str);
			}
		}
}
//----------------设置统计宽度(m_iWidth)-----------------//
void CChildView::OnSetupStatisticsNumber() 
{
	CDlgChoseNumber dlgChos;

	if (IDOK==dlgChos.DoModal())
	{
		m_iWidth=atoi((char *)((const char *)(dlgChos.m_text)));
	}
}
//----------------连字号统计-----------------//
void CChildView::ConntinuedNumber(int iStart, int iEnd, CListCtrl *pListCtrl)
{
		if (pListCtrl->GetItemCount())
			pListCtrl->DeleteAllItems();
		else
		{
			pListCtrl->InsertColumn(0,"2连字号",LVCFMT_LEFT,70);
			pListCtrl->InsertColumn(1,"次数",LVCFMT_LEFT,50);
			pListCtrl->InsertColumn(2,"3连字号",LVCFMT_LEFT,80);
			pListCtrl->InsertColumn(3,"次数",LVCFMT_LEFT,50);
			pListCtrl->InsertColumn(4,"4连字号",LVCFMT_LEFT,100);
			pListCtrl->InsertColumn(5,"次数",LVCFMT_LEFT,50);
			pListCtrl->InsertColumn(6,"5连字号",LVCFMT_LEFT,120);
			pListCtrl->InsertColumn(7,"次数",LVCFMT_LEFT,50);
		}
		UINT con[30][5];
		ZeroMemory((void*)con,sizeof(UINT)*30*5);
		int ItemCount=(iEnd - iStart) + 1;
		for (int i=iStart; i<iEnd+1; i++)
		{
			LOTTERY lty=m_array.GetAt(i);
			for (int j=1; j<9; j++)
			{
				for (int k=j+1; k<9; k++)
				{
					if (lty.i[j] > lty.i[k])
					{
						UINT temp=lty.i[j];
						lty.i[j]=lty.i[k];
						lty.i[k]=temp;
					}
				}
			}
			for (j=1; j<9; j++)
			{
				if ((j+5)<9 && (lty.i[j]+1 == lty.i[j+1]) && (lty.i[j]+2 == lty.i[j+2]) && (lty.i[j]+3 == lty.i[j+3]) && (lty.i[j]+4 == lty.i[j+4]) && (lty.i[j]+5 == lty.i[j+5])) {con[lty.i[j]-1][4]++;j+=6;}
				if ((j+4)<9 && (lty.i[j]+1 == lty.i[j+1]) && (lty.i[j]+2 == lty.i[j+2]) && (lty.i[j]+3 == lty.i[j+3]) && (lty.i[j]+4 == lty.i[j+4])) {con[lty.i[j]-1][3]++;j+=5;}
				if ((j+3)<9 && (lty.i[j]+1 == lty.i[j+1]) && (lty.i[j]+2 == lty.i[j+2]) && (lty.i[j]+3 == lty.i[j+3])) {con[lty.i[j]-1][2]++;j+=4;}
				if ((j+2)<9 && (lty.i[j]+1 == lty.i[j+1]) && (lty.i[j]+2 == lty.i[j+2])) {con[lty.i[j]-1][1]++;j+=3;}
				if ((j+1)<9 && (lty.i[j]+1 == lty.i[j+1])) {con[lty.i[j]-1][0]++;j+=2;}
			}
		}
		CString strConn;
		for (i=0; i<30; i++)
		{
			BOOL inserted=FALSE;
			if (con[i][0])
			{
				inserted=TRUE;
				pListCtrl->InsertItem(0,NULL);
				strConn.Format("%2d  %2d ",i+1,i+2);
				pListCtrl->SetItemText(0,0,strConn);
				strConn.Format("%d",con[i][0]);
				pListCtrl->SetItemText(0,1,strConn);
			}
			if (con[i][1])
			{
				if (!inserted)
				{
					inserted=TRUE;
					pListCtrl->InsertItem(0,NULL);
				}
				strConn.Format("%2d  %2d  %2d",i+1,i+2,i+3);
				pListCtrl->SetItemText(0,2,strConn);
				strConn.Format("%d",con[i][1]);
				pListCtrl->SetItemText(0,3,strConn);
			}
			if (con[i][2])
			{
				if (!inserted)
				{
					inserted=TRUE;
					pListCtrl->InsertItem(0,NULL);
				}
				strConn.Format("%2d  %2d  %2d  %2d",i+1,i+2,i+3,i+4);
				pListCtrl->SetItemText(0,4,strConn);
				strConn.Format("%d",con[i][2]);
				pListCtrl->SetItemText(0,5,strConn);
			}
			if (con[i][3])
			{
				if (!inserted)
				{
					inserted=TRUE;
					pListCtrl->InsertItem(0,NULL);
				}
				strConn.Format("%2d  %2d  %2d  %2d  %2d",i+1,i+2,i+3,i+4,i+5);
				pListCtrl->SetItemText(0,6,strConn);
				strConn.Format("%d",con[i][3]);
				pListCtrl->SetItemText(0,7,strConn);
			}
		}
}

//----------------显示曲线窗口-----------------//
void CChildView::OnShowCurveView() 
{
	if (!m_pFreq)
	{
		m_pFreq=new FREQUENCY[m_array.GetSize()+1];
	}
	for (unsigned int i=0; i<m_array.GetSize()-m_iWidth+1; i++)
	{
		FrequencyStatistics(m_array.GetSize()-m_iWidth-i,i);
	}
	m_CurveView.ShowWindow(SW_SHOWMAXIMIZED);
}


//----------------显示序列统计窗口-----------------//
void CChildView::OnShowSequency() 
{
	if (!m_dlgSeq.m_isFilled)
	{
		int order=0;
		int w=m_array.GetSize();
		for (int i=0; i<w-6; i++)
		{
			LOTTERY lot1 = m_array.GetAt(i);
			char szOrder[12];
			itoa(lot1.t.t0,szOrder,10);
			m_dlgSeq.m_list.InsertItem(order,NULL);
			m_dlgSeq.m_list.SetItemText(order,0,szOrder);
			for (int j=i+1; j<i+7; j++)
			{
				LOTTERY lot2 = m_array.GetAt(j);
				int nNum=0;
				UINT buf[10];
				lot2.GetDifference(&lot1,&nNum,buf);
				CString szText;
				szText.Format("%d--",nNum);
				for (int k=0; k<nNum; k++)
				{
					CString strTemp;
					strTemp.Format("%2u ",buf[k]);
					szText+=strTemp;
				}
				m_dlgSeq.m_list.SetItemText(order,j-i,szText);
			}
			order++;
		}
		m_dlgSeq.m_isFilled=TRUE;
	}
	m_dlgSeq.ShowWindow(SW_SHOWNORMAL);
}

void CChildView::OnShowSumWindow() 
{
	if (!m_dlgSum.m_isFilled)
	{
		int count=m_array.GetSize();
		m_dlgSum.m_nSize=count;
		if (m_dlgSum.m_pBuf)
		{
			delete [] m_dlgSum.m_pBuf;
		}
		m_dlgSum.m_pBuf=new UINT[count];
		LOTTERY lty;
		for (int i=0; i<count; i++)
		{
			lty=m_array.GetAt(i);
			m_dlgSum.m_pBuf[i]=lty.GetSum();
		}
		for (i=0; i<count-1; i++)
		{
			for (int j=i+1; j<count; j++)
			{
				if (m_dlgSum.m_pBuf[i] > m_dlgSum.m_pBuf[j])
				{
					UINT temp=m_dlgSum.m_pBuf[i];
					m_dlgSum.m_pBuf[i]=m_dlgSum.m_pBuf[j];
					m_dlgSum.m_pBuf[j]=temp;
				}
			}
		}
		m_dlgSum.m_isFilled=TRUE;
	}
	m_dlgSum.ShowWindow(SW_NORMAL);	
}

UINT CChildView::C_N_M(int n, int m)
{
	if (m==0) return 1;
	_int64 sum=1,b1=1,b2=1;
	for (int i=1; i<=n; i++)
	{
		sum*=i;
	}
	for ( i=1; i<=m; i++)
	{
		b1*=i;
	}
	for ( i=1; i<=(n-m); i++)
	{
		b2*=i;
	}
	return (UINT)(sum/b1/b2);
}

void CChildView::FillSequencyArray()
{
/*	int count=m_array.GetSize();
	ZeroMemory(&m_seq,sizeof(SEQUENCY)*MAX_SEQUENCY_NUMBER);
	ZeroMemory(&m_feq,sizeof(FREQUENCY)*MAX_SEQUENCY_NUMBER);
	for (int i=m_nMin; i<=m_nMax; i++)
	{
		FREQUENCY freq;
		for (int j=0; j<count-i+1; j++)
		{
			FrequencyStatistics(count-i-j,i,&freq);
			if (j== (count-i))
			{
				m_feq[i]=freq;
			}
			for (int k=0; k<30; k++)
			{
				m_seq[i].s[freq.f[k]]++;
			}
		}
		for (int k=0; k<MAX_SEQUENCY_NUMBER; k++)
		{
			m_seq[i].s[k]/=(count-i+1);
		}
	}*/
}

double LOTTERY::GetFS()
{
	double dFS=0;
	for (int i=1; i<8; i++)
		dFS+=pCV->m_dFreq[this->i[i]-1];
	return dFS;
}

⌨️ 快捷键说明

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