在VC++中,如复选框对应6个数1,3,5,6,8,9,任意选择2个以上数字,并进行两两组合,如选择了6,8,9,就有68,69,89三种组合,即组选,最后把组合的数字在编辑框上显示出来,这样的程序怎么写,知道的指点一下,说清每一步骤,最好给个源码,我就知道CButton *b=((CButton *)GetDlgItem(ID号))->GetCheck() )检测出选中的数字,其他的就不清楚了,知道的高手教一下好吗,小弟跪谢了VC++,复选框,

解决方案 »

  1.   

    CString::Format来组合数字,然后SetWindowText显示
      

  2.   

    以下是我写的vc代码,怎么有时候对,有时候出错,不知道怎么回事,请赐教,谢了
    void CP20Dlg::OnButton1() 
    {
    const int Check[12] = {IDC_CHECK1,IDC_CHECK2,IDC_CHECK3,IDC_CHECK4,IDC_CHECK5,
         IDC_CHECK6,IDC_CHECK7,IDC_CHECK8,IDC_CHECK9,IDC_CHECK10,IDC_CHECK11,IDC_CHECK12};
    int nu[12] = {1, 2,3, 4, 5,6,7,8,9,10,11,12};
        CString tem;
       CString s;
    CString str=" ";
    CString s1;
    int t=0;
    int size=0;;
    int *a=new int[size];
    for(int i=0; i<12; i++)
    { if(((CButton *)GetDlgItem(Check))->GetCheck())
           
    { a=nu;
    size+=1;}
    }
    for(int x=0;x<size-1;x++) 
      {       
       for(int j=x+1;j<size;j++)   
       { 
               
                tem.Format("%d%d",a[x],a[j]);
               str=str+tem+",";
                  
       t=t+1;   
          } 
    }GetDlgItem(IDC_EDIT1)->SetWindowText(str);
    s.Format(_T("%d"), t);
    str="共有"+s+"种组合";
    SetDlgItemText(IDC_EDIT2,str);
    }
      

  3.   

    这样改行不:
    const int Check[12] = {IDC_CHECK1,IDC_CHECK2,IDC_CHECK3,IDC_CHECK4,IDC_CHECK5,
         IDC_CHECK6,IDC_CHECK7,IDC_CHECK8,IDC_CHECK9,IDC_CHECK10,IDC_CHECK11,IDC_CHECK12};
    int nu[12] = {1, 2,3, 4, 5,6,7,8,9,10,11,12};
        CString tem;
       CString s;
    CString str=" ";
    CString s1;
    int t=0;
    int size=0;;
    int *a=new int[size];
    for(int i=0; i<12; i++)
    { if(((CButton *)GetDlgItem(Check[i]))->GetCheck())
           
    { a[size]=nu[i];
    size+=1;}
    }
    for(int x=0;x<size-1;x++) 
      {       
       for(int j=x+1;j<size;j++)   
       { 
               
                tem.Format("%d%d",a[x],a[j]);
               str=str+tem+",";
                  
       t=t+1;   
          } 
    }GetDlgItem(IDC_EDIT1)->SetWindowText(str);
    s.Format(_T("%d"), t);
    str="共有"+s+"种组合";
    SetDlgItemText(IDC_EDIT2,str);
      

  4.   

    楼主变量命名完全没章法 还有别忘了delete掉a
      

  5.   

    按照你的改了代码,但是还是一组合程序奔溃了,我也不知道怎么办了,帮我再改一下好吗,还有麻烦你在vc上调试成功,谢了,错误如图,delete掉a 怎么还是奔溃,真不知错哪里了,
      

  6.   

    4L代码第10行,定义指针a的时候  a的空间完全不够,所以程序会崩溃。先不要按照动态划分,直接给上一个比较大的内存空间,而且在这个地方,我建议选择数组,不建议选指针。
      

  7.   

    int a[12];
    for(int i=0; i<12; i++)

    if(((CButton *)GetDlgItem(Check))->GetCheck())
        { 
    a[size]=nu[i];
    size+=1;
    }
    }