用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c++代码库

ShuangSeQiu

2016-09-20 作者: 杨不凡举报

[c++]代码库

BOOL CAboutDlg::OnInitDialog()
{
    CDialog::OnInitDialog();
     
    // TODO: Add extra initialization here
     
    SetDlgItemText(IDC_EDIT1,"声明:本程序采用历史开奖记录,用遗传算法计算下期可能出现的红色球号码和兰色球号码.本人不负责使用本程序引起的连带责任.");
     
    return TRUE;  // return TRUE unless you set the focus to a control
    // EXCEPTION: OCX Property Pages should return FALSE
}
 
 
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CAboutDlg)
    //}}AFX_DATA_MAP
}
 
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
//}}AFX_MSG_MAP
 
END_MESSAGE_MAP()
 
/////////////////////////////////////////////////////////////////////////////
// CShuangSeQiuDlg dialog
 
CShuangSeQiuDlg::CShuangSeQiuDlg(CWnd* pParent /*=NULL*/)
: CDialog(CShuangSeQiuDlg::IDD, pParent)
{
    //{{AFX_DATA_INIT(CShuangSeQiuDlg)
    // NOTE: the ClassWizard will add member initialization here
    //}}AFX_DATA_INIT
    // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
 
void CShuangSeQiuDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CShuangSeQiuDlg)
    DDX_Control(pDX, IDC_CODELIST, m_list);
    //}}AFX_DATA_MAP
}
 
BEGIN_MESSAGE_MAP(CShuangSeQiuDlg, CDialog)
//{{AFX_MSG_MAP(CShuangSeQiuDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BTN_YUCE, OnBtnYuce)
ON_BN_CLICKED(IDC_BTN_ADD, OnBtnAdd)
ON_BN_CLICKED(IDC_BTN_VIEWHISTORY, OnBtnViewhistory)
ON_BN_CLICKED(IDC_BTN_SAVE, OnBtnSave)
ON_BN_CLICKED(IDC_BTN_HISTORYSTAT, OnBtnHistorystat)
ON_NOTIFY(NM_CLICK, IDC_CODELIST, OnClickCodelist)
ON_BN_CLICKED(IDC_BTN_HISTORY, OnBtnHistory)
ON_BN_CLICKED(IDC_BTN_DELETE, OnBtnDelete)
//}}AFX_MSG_MAP
ON_NOTIFY (NM_CUSTOMDRAW, IDC_CODELIST, OnCustomdrawMyList)
 
ON_MESSAGE(WM_VALIDATE, OnEndLabelEditVariableCriteria) //添加的自定义的消息
ON_MESSAGE(WM_SET_ITEMS, PopulateComboList)
 
END_MESSAGE_MAP()
BOOL CShuangSeQiuDlg::OnInitDialog()
{
    CDialog::OnInitDialog();
     
    //skinppLoadSkin("AquaOS.ssk");
    skinppLoadSkin("MAC.ssk");
     
     
    // Add "About..." menu item to system menu.
     
    // IDM_ABOUTBOX must be in the system command range.
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000);
     
    CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
        CString strAboutMenu;
        strAboutMenu.LoadString(IDS_ABOUTBOX);
        if (!strAboutMenu.IsEmpty())
        {
            pSysMenu->AppendMenu(MF_SEPARATOR);
            pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
        }
    }
     
    // Set the icon for this dialog.  The framework does this automatically
    //  when the application's main window is not a dialog
    SetIcon(m_hIcon, TRUE);         // Set big icon
    SetIcon(m_hIcon, FALSE);        // Set small icon
     
     
     
    m_list.EnableVScroll();
    m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT); 
    m_list.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);  
     
     
     
    m_list.InsertColumn(0,_T("ID"),LVCFMT_LEFT,30);
    m_list.InsertColumn(1,_T("红1"),LVCFMT_LEFT,40);
    m_list.InsertColumn(2,_T("红2"),LVCFMT_LEFT,40);
    m_list.InsertColumn(3,_T("红3"),LVCFMT_LEFT,40);
    m_list.InsertColumn(4,_T("红4"),LVCFMT_LEFT,40);
    m_list.InsertColumn(5,_T("红5"),LVCFMT_LEFT,40);
    m_list.InsertColumn(6,_T("红6"),LVCFMT_LEFT,40);
     
    m_list.InsertColumn(7,_T("蓝"),LVCFMT_LEFT,40);
     
     
    line = 0;
    yuce = 0;
     
    //初始化变量
    initVar();
     
    //读历史数据
    ReadHistroy();
     
    CString strValidChars;//   
    m_list.SetReadOnlyColumns(0);//read only
     
    strValidChars = "0123456789";
    m_list.SetColumnValidEditCtrlCharacters(strValidChars,1);//digital only edit
    m_list.SetColumnValidEditCtrlCharacters(strValidChars,2);//digital only edit
    m_list.SetColumnValidEditCtrlCharacters(strValidChars,3);//digital only edit
    m_list.SetColumnValidEditCtrlCharacters(strValidChars,4);//digital only edit
    m_list.SetColumnValidEditCtrlCharacters(strValidChars,5);//digital only edit
    m_list.SetColumnValidEditCtrlCharacters(strValidChars,6);//digital only edit
    m_list.SetColumnValidEditCtrlCharacters(strValidChars,7);//digital only edit
     
    // TODO: Add extra initialization here
     
    return TRUE;  // return TRUE  unless you set the focus to a control
}
 
void CShuangSeQiuDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
    if ((nID & 0xFFF0) == IDM_ABOUTBOX)
    {
        CAboutDlg dlgAbout;
        dlgAbout.DoModal();
    }
    else
    {
        CDialog::OnSysCommand(nID, lParam);
    }
}
 
 
 
 
// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.
 
void CShuangSeQiuDlg::OnPaint()
{
    if (IsIconic())
    {
        CPaintDC dc(this); // device context for painting
         
        SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
         
        // Center icon in client rectangle
        int cxIcon = GetSystemMetrics(SM_CXICON);
        int cyIcon = GetSystemMetrics(SM_CYICON);
        CRect rect;
        GetClientRect(&rect);
        int x = (rect.Width() - cxIcon + 1) / 2;
        int y = (rect.Height() - cyIcon + 1) / 2;
         
        // Draw the icon
        dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
        CDialog::OnPaint();
    }
}
 
 
 
// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CShuangSeQiuDlg::OnQueryDragIcon()
{
    return (HCURSOR) m_hIcon;
}
 
 
//初始化变量
void CShuangSeQiuDlg::initVar()
{
     
    for(int i=0;i<6;i++){
        red[i] ="";
    }
     
    blue="";        //已经蓝球
     
    for(int r=0;r<34;r++){
        StatRed[r] =0;      //红球累计
        StatRedRate[r] = 0.0;       //红球累计率
         
        sn[r] = r;
    }
     
    for(int b=0;b<17;b++){
        StatBlue[b] =0;             //蓝球累计 
        StatBlueRate[b] = 0.0;      //蓝球累计率
    }
     
    int dd = 0;
    deleteflag = false;
    totalsn = 0;
    popnum = 20;
    //为预报工作作一些初始化
    for(int item=0;item<popnum;item++)
    {
        for(int r=0;r<6;r++)
            ItemCountRed[item][r]=0;
        ItemCountBlue[item]=0;
        ItemCountRedRate[item] =0;
    }
    MAXRATE = 20;   //rate 排序前max的值
    thebest =0;    
    yecefail = true;
}
 
//读历史数据
void CShuangSeQiuDlg::ReadHistroy()
{
    CHistoryReorcd chr;
    CString path = chr.GetCurPath();
    CString filename = path+ "\\history.txt";
    line = chr.GetFileLine(filename);
    //分析每一行的数据,根据不同的内容,把值分到不同的数组中.
    for(int i=1;i<=line;i++){
        CString linestr= chr.GetLineActionFile(filename,i);
        int sub = linestr.Find(":",0);
        CString codestr = linestr.Mid(sub+1);
        CSpliter cSpliter;
        cSpliter.setdata(codestr);
        cSpliter.setsplitflag(",");
        CStringArray a;
        cSpliter.getsplitstrarray(a);
        int number_red=0;
        for(int r=0;r<6;r++){
            number_red = atoi(a.GetAt(r));
            StatRed[number_red] ++;
        }
        //把最后两期的号赋到全局数组中,以供预测时候比较.
        if(i == line-1){   
            for(int p=0;p<6;p++)
            {      
                int sn =p;
                passval[sn] = atoi(a.GetAt(p));
            }
        }else if (i == line){  
            for(int p=0;p<6;p++)
            {  
                int sn = 6+p;
                passval[sn] = atoi(a.GetAt(p));
            }
        }
        int number_blue = atoi(a.GetAt(6));
        StatBlue[number_blue] ++;
    }
    float RedTotolTime  = (float)6*line;        //红球总出现次数
    float BlueTotolTime = (float)line;          //蓝球总出现次数
    //计算机率
    for(int rr=1;rr<34;rr++){
        StatRedRate[rr] = (float)StatRed[rr] /  RedTotolTime;           //红球累计率
    }
    for(int br=1;br<17;br++){
        StatBlueRate[br] = (float)StatBlue[br] /BlueTotolTime;          //蓝球累计率
    }
}
 
void CShuangSeQiuDlg::OnBtnYuce()
{
    yecefail = true;
    while(yecefail)
    {
        //通过算法得到数值
        GAStudy();
        UpdateData(TRUE);
        int i =m_list.GetItemCount();
        CString str;
        str.Format("%d",totalsn+1);
        if (!yecefail)
        {
            SetDlgItemText(IDC_STATIC_INFO,"信息:这是个可选号码!" );
            m_list.InsertItem(LVIF_TEXT|LVIF_STATE, i+1, str, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED, 0, 0);
        }
        if (!yecefail)
        {  
            int array[7];
            bool shaixuan[33]={false};
            for(int sub=0;sub<6;sub++)
            {
                array[sub+1]=sn[ItemCountRed[thebest][sub]];
                int idx=array[sub+1];
                while(shaixuan[idx-1])
                {
                    idx=idx%33+1;
                    array[sub+1]=idx;
                }
                shaixuan[idx-1]=true;
            }
            QuickSort(array,1,6);
            for(sub=1;sub<7;sub++)
            {
                CString s; 
                s.Format("%d" ,array[sub]);    
                m_list.SetItemText(i,sub,s);
            }
            int blue = rand()%16 + 1;
            CString bstr;
            bstr.Format("%d",blue);
            //兰色球号码,没有怎么做,随机了一个兰色球,哈...
            m_list.SetItemText(i,7,_T(bstr));
            totalsn++;
        }
        UpdateData(FALSE); 
    }
}
 
//开始GA学习
void CShuangSeQiuDlg::GAStudy()
{  
     
    initpop();              //初始化种群
    int train_count =0;
    int totalval =118;      //累加和
     
    int bubiaole =0;
    int pre = 0;
     
    while( totalval < 75  || totalval > 125  ||  train_count< 10  )
    {
        totalval = 0;           //初始化为0
         
        train_count++;          //下一代
         
        ComputeFit();           //计算适应度
         
        SelectAndDeletePop();   //选择和淘汰种群
         
        CrossPop();             //交叉操作
         
        Mutation();             //变异操作
         
        thebest = GetResult();  //得到最优种群ID
         
        int val[6] ={0};
         
        for(int i=0;i<6;i++){
            val[i] = sn[ItemCountRed[thebest][i]];
            totalval = totalval + val[i];
        }
         
        if (pre == totalval){
            bubiaole ++;
        }else{
            pre = totalval;
        }
         
        if (bubiaole>10){
            //AfxMessageBox("出现不推荐号码已跳过,请继续预测!");
            SetDlgItemText(IDC_STATIC_INFO,"信息:出现不推荐号码已跳过,系统继续预测中......" );
            yecefail = true;
            break;
        }else{
            yecefail = false;
        }
         
        //比较与上两期差别
        int samecount =0;
        for(i=0;i<6;i++){
            for(int sn=0;sn<12;sn++){
                if( val[i] == passval[sn] ){
                    samecount ++ ;
                    if (samecount > 2 ){ //如果大于两个则,放弃这个预测                   
                        yecefail = true;
                        SetDlgItemText(IDC_STATIC_INFO,"信息:与上两期相似号跳过,系统继续预测中......" );
                        break;
                    }else{
                        yecefail = false;
                    }
                }
            }
        }
         
        int dd = 0;
         
    }
     
}
 
//初始化种群
void CShuangSeQiuDlg::initpop()
{
    //排序
    int tmp=0;
     
    for(int i=1;i<34;i++){
        for(int j=i+1;j<34;j++)
            if( StatRedRate[sn[i]]  < StatRedRate[sn[j]] ) {
                tmp = sn[i];
                sn[i]= sn[j];
                sn[j] = tmp;               
            }
    }
     
     
    //间接排序问题
    /*
    CStdioFile file;
    file.Open("sort.txt",CFile::modeCreate|CFile::modeReadWrite);
     
      int len = 34;
      for(i=1;i<len ;i++){
      CString rate,ratelist;
      ratelist.Format("%.8f",StatRedRate[sn[i]]);
      rate.Format("%d --",sn[i]);
      rate = rate + ratelist;
      file.WriteString(rate);
      file.WriteString("\n");
      }
      file.Close();
    */
     
     
    srand(time(0));/*设置种子,并生成伪随机序列*/
    for(int pop=0;pop<popnum;pop++){
        for(int j=0;j<6;j++){
            bool same = true;
             
            int r =0;
            int min = 1;
             
            int diff=0;
            while(same){
                r = rand()%(MAXRATE) + min;
                for(int next=0 ;next<6; next++){
                    if (r == ItemCountRed[pop][next] ){
                        same =true;
                        diff= 0;
                        break;
                    }else{
                        diff ++;
                    }
                }
                if (diff >= 5){
                    same = false;
                }
            }
            ItemCountRed[pop][j] = r;  
        }
    }  
     
    CStdioFile file;
    file.Open("pop.txt",CFile::modeCreate|CFile::modeReadWrite);
    for(i=0;i<popnum ;i++){
        CString popn="";
         
        for(int j=0;j<6;j++){           
            CString nextp="";
            nextp.Format("%d",sn[ItemCountRed[i][j]] );   //相当于rate.Format("%d --",sn[i]);
            popn = popn + " " + nextp;
             
        }
        file.WriteString(popn);
        file.WriteString("\n");
    }
    file.Close();
     
     
}
 
 
//计算适应度
void CShuangSeQiuDlg::ComputeFit()
{
    for(int pop=0;pop<popnum;pop++){
        for(int j=0;j<6;j++){
            int cur = sn[ItemCountRed[pop][j]] ;
            ItemCountRedRate[pop] =ItemCountRedRate[pop] + StatRedRate[cur] ;
        }      
    }
     
     
    CStdioFile file;
    file.Open("poprate.txt",CFile::modeCreate|CFile::modeReadWrite);
    for(int i=0;i<popnum ;i++){
        CString popn="";
        popn.Format("%.8f",ItemCountRedRate[i]);
        file.WriteString(popn);
        file.WriteString("\n");
    }
    file.Close();
}
 
 
 
//选择和淘汰种群
void CShuangSeQiuDlg::SelectAndDeletePop()
{
    float maxrate =0;
    float minrate =1000;
     
     
    for(int i=0;i<popnum ;i++){
        if (ItemCountRedRate[i] > maxrate){
            maxindex = i;
            maxrate = ItemCountRedRate[i] ;
        }
        if (ItemCountRedRate[i] < minrate){
            minindex = i;
            minrate = ItemCountRedRate[i] ;
        }
    }
     
    CStdioFile file;
     
    CFileStatus   fs;  
    if(!CFile::GetStatus(_T("popselect.txt"),fs))  
    {          
        file.Open("popselect.txt",CFile::modeCreate|CFile::modeReadWrite);
    }else{
        file.Open("popselect.txt",CFile::modeReadWrite);
    }
     
     
     
     
    file.SeekToEnd();
     
    CString maxindexstr="";
    maxindexstr.Format("%d 最优的种群ID",maxindex);
    file.WriteString(maxindexstr);
    file.WriteString("\n");
     
    CString minindexstr="";
    minindexstr.Format("%d 最差的种群ID",minindex);
    file.WriteString(minindexstr);
    file.WriteString("\n");
     
    file.Close();
     
}
 
//交叉操作
void CShuangSeQiuDlg::CrossPop()
{
    srand(time(0));
    int min =0;
    int r = 0;      //随机一个种群号
     
    CStdioFile file;
    file.Open("CrossPop.txt",CFile::modeCreate|CFile::modeReadWrite);
     
    file.SeekToEnd();
     
    CString rr="";
    rr.Format("%d",minindex);
    CString crossstr="最差的 minindex=" + rr + "\n";
     
    for(int i=0;i<6;i++){
        CString s="";
        s.Format("%d" ,sn[ ItemCountRed[minindex][i] ]);
        crossstr = crossstr + s  + " ";
    }
    file.WriteString(crossstr);
    file.WriteString("\n");
     
     
    bool nextthreesame = true;
     
    //如果随机的后三位和最优的前三位不同就可以
    while(nextthreesame){
        r = rand()%(popnum) + min;  //从种群20中随机一个种群号
        int cuti= 3;
        int cutb =0;
        for(cuti=3;cuti<6;cuti++){   //随机的后三位
            for(cutb=0;cutb<3;cutb++){//最优的前三位比较
                if(sn[ ItemCountRed[r][cuti] ] == sn[ ItemCountRed[maxindex][cutb] ]){
                    nextthreesame = true;       //有相同的,则要重新找随机种群
                    break;
                }
            }
        }
        if(cuti == 6 && cutb == 3){
            nextthreesame = false;
        }
    }
     
     
    //用最好的种群和随机的种群进行杂交,替换最差的种群的前三位值
    for(int cutb=0;cutb<3;cutb++){
        ItemCountRed[minindex][cutb] = ItemCountRed[maxindex][cutb] ;
    }
     
    for(int cuti=3;cuti<6;cuti++){
        ItemCountRed[minindex][cuti] = ItemCountRed[r][cuti] ;
    }
     
     
    rr.Format("%d",r);
    crossstr="随机 r=" + rr + "\n";
    for(i=0;i<6;i++){
        CString s="";
        s.Format("%d" ,sn[ ItemCountRed[r][i] ]);
        crossstr = crossstr + s+ " ";
    }
    file.WriteString(crossstr);
    file.WriteString("\n");
     
    rr.Format("%d",maxindex);
    crossstr="最好的 maxindex=" + rr + "\n";
    for(i=0;i<6;i++){
        CString s="";
        s.Format("%d" ,sn[ ItemCountRed[maxindex][i] ]);
        crossstr = crossstr + s + " ";
    }
    file.WriteString(crossstr);
    file.WriteString("\n");
     
    rr.Format("%d",minindex);
    crossstr="新的 minindex=" + rr + "\n";
    for(i=0;i<6;i++){
        CString s="";
        s.Format("%d" ,sn[ ItemCountRed[minindex][i] ]);
        crossstr = crossstr + s + " ";
    }
    file.WriteString(crossstr);
    file.WriteString("\n");
     
    file.Close();
     
}
 
 
//变异操作 
void CShuangSeQiuDlg::Mutation()
{
     
    float r = (float)rand()/65535 ;
    int min =0;
    int opindex = 0;
     
    if(r<0.4){
        opindex = rand()%(MAXRATE) + min;       //从最优号码里面选一个号
        ItemCountRed[minindex][0] = opindex;
    }else if (r<0.8){
        opindex = rand()%(33) + min;            //从全部号里面选一个号
        ItemCountRed[minindex][5] = opindex;
    }else{
        opindex = rand()%(33) + MAXRATE;        //从最差号中选一个号
        ItemCountRed[minindex][5] = opindex;
    }
     
     
     
    CStdioFile file;
    file.Open("Mutation.txt",CFile::modeCreate|CFile::modeReadWrite);
     
    CString rr="";
    rr.Format("%.8f", r);
    CString crossstr="随机 r = " + rr + "\n";
    file.WriteString(crossstr);
    file.WriteString("\n");
    if(r<0.5){
        rr.Format("%d", opindex);
        crossstr="最优选号 opindex = " + rr + "\n";
        file.WriteString(crossstr);
        file.WriteString("\n");
    }else{
        rr.Format("%d", opindex);
        crossstr="全部选号 opindex = " + rr + "\n";
        file.WriteString(crossstr);
        file.WriteString("\n");
    }
     
     
    crossstr="变异后\n";
    for(int i=0;i<6;i++){
        CString s="";
        s.Format("%d" ,sn[ ItemCountRed[minindex][i] ]);
        crossstr = crossstr + s + " ";
    }
    file.WriteString(crossstr);
    file.WriteString("\n");
    file.Close();
}
 
//得到最优的遗传结果
int CShuangSeQiuDlg::GetResult()
{
    int thebestpop =0;
    for(int pop=0;pop<popnum;pop++){
        ItemCountRedRate[pop] =0;
        for(int j=0;j<6;j++){
            int cur = sn[ItemCountRed[pop][j]] ;
            ItemCountRedRate[pop] =ItemCountRedRate[pop] + StatRedRate[cur] ;
        }      
    }
     
    CStdioFile file;
    file.Open("poprateget.txt",CFile::modeCreate|CFile::modeReadWrite);
    for(int i=0;i<popnum ;i++){
        CString popn="";
        popn.Format("%.8f",ItemCountRedRate[i]);
        file.WriteString(popn);
        file.WriteString("\n");
    }
     
    float maxrate =0;
    for(i=0;i<popnum ;i++){
        if (ItemCountRedRate[i] > maxrate){
            maxindex = i;
            maxrate = ItemCountRedRate[i] ;
        }
    }
     
    CString thebest = "";
    thebest.Format("%d",maxindex);
    file.WriteString(thebest);
    file.WriteString("\n");
     
    CString crossstr="最优的种群为:\n";
    for(i=0;i<6;i++){
        CString s="";
        s.Format("%d" ,sn[ItemCountRed[maxindex][i]]);
        crossstr = crossstr + s + " ";
    }
    file.WriteString(crossstr);
    file.WriteString("\n");
    file.Close();
    thebestpop = maxindex;
    return thebestpop;
}
 
 
//新增历史
void CShuangSeQiuDlg::OnBtnAdd()
{
    CAddHistoryDlg adddlg;
    if (adddlg.DoModal()){
        //重新初始化;
        initVar();
        //重新导入记录;
        ReadHistroy();
    }
}
 
 
//查看历史
void CShuangSeQiuDlg::OnBtnViewhistory()
{
    WinExec("Notepad.exe history.txt", SW_SHOW);
}
 
//保存号码
void CShuangSeQiuDlg::OnBtnSave()
{
     
    CStdioFile file;
    file.Open("save.txt",CFile::modeCreate|CFile::modeReadWrite);
     
    int len = m_list.GetItemCount();
    for(int i=0;i<len ;i++){
        CString codeline;
        for(int j=1;j<8;j++){
            CString code = m_list.GetItemText(i,j);
            codeline = codeline + code + "  ";
        }
        file.WriteString(codeline);
        file.WriteString("\n");
    }
    file.Close();
     
    WinExec("Notepad.exe save.txt", SW_SHOW);  
     
}
 
//历史统计
void CShuangSeQiuDlg::OnBtnHistorystat()
{
    CStdioFile file;
    file.Open("historystat.txt",CFile::modeCreate|CFile::modeReadWrite);
     
    CString redt;
    redt.Format("%d",line);
     
    CString rss = "现在总期数 " + redt+ "期.\n" ;
     
     
    file.WriteString(rss);
     
    for(int r =1;r<34;r++){     
        CString rstr,rn;
        rstr.Format("%d",r);
        rn.Format("%d",StatRed[r]);
        CString rp = "红" + rstr + " 出现 " + rn+ "次.";
         
        CString redrate;
        redrate.Format("%.8f",StatRedRate[r]);
        rp = rp + " 出现率为" + redrate + "\n";
         
        file.WriteString(rp);
    }  
     
    file.WriteString("\n***********************\n");
     
    CString bluet;
    bluet.Format("%d",line);
    CString bss = "兰球共出现 " + bluet+ "次.\n" ;
    file.WriteString(bss);
     
    for(int b=1;b<17;b++){      
        CString bstr,bn;
        bstr.Format("%d",b);
        bn.Format("%d",StatBlue[b]);
        CString bp = "兰" + bstr + " 出现 " + bn+ "次.";
        CString bluerate;
        bluerate.Format("%.8f",StatBlueRate[b]);
        bp = bp + " 出现率为" + bluerate + "\n";
        file.WriteString(bp);
    }
     
     
    file.Close();
    WinExec("Notepad.exe historystat.txt", SW_SHOW);   
     
}

[代码运行效果截图]


ShuangSeQiu

[源代码打包下载]




网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...