本帖最后由 skysonya_shisy 于 2011-07-31 21:48:39 编辑

解决方案 »

  1.   

    这个是c++写的,还是和C#有很多不一样
    //---------------------------------------------------------------------------#include <vcl.h>
    #pragma hdrstop#include "Main.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TfrmMain *frmMain;
    //---------------------------------------------------------------------------
    __fastcall TfrmMain::TfrmMain(TComponent* Owner)
        : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------void __fastcall TfrmMain::Button1Click(TObject *Sender)
    {
        String s = chang(Edit1->Text,Edit2->Text) ;
        int t = s.Pos("$$$") ;
        Edit3->Text = s.SubString(1,t-1) ;
        Edit4->Text = s.Delete(1,t+2) ;
    }
    //---------------------------------------------------------------------------
    String TfrmMain::chang(String str,String da)
    {
        String st="",sd="";
        String stx[10];
        int i=0,j,t,n,r[10];
        bool d[10];
        while(i<10)
            r[i++] = 10 ;
        for(i=0;i<10;i++)
        {
            t = str.Pos(";");
            if(!t)
                break;
            stx[i] = str.SubString(1,t-1);
            str = str.Delete(1,t);
            if(da.Pos(String(char(65+i)))>0)
                d[i] = true ;
            else
                d[i] = false ;
        }
        n = i ;
        for(i=0;i<Now().FormatString("nnss").ToInt();i++)
            random(n) ;
        for(i=0;i<n;i++)
        {
            rt: t = random(n);
            for(j=0;j<n;j++)
            {
                if(t == r[j])
                    goto rt;
            }
            r[i] = t ;
        }
        for(i=0;i<n;i++)
        {
            st = st + stx[r[i]] + ";" ;
            if(d[r[i]])
                sd = sd + String(char(65+i)) ;
        }
        return  st + "$$$" + sd;
    }
    //---------------------------------------------------------------------------
    void __fastcall TfrmMain::Button2Click(TObject *Sender)
    {
        int n,i=0,j,t,r[100] ;
        while(i<100)
            r[i++] = 100 ;
        try
        {
             n = Edit4->Text.ToInt() ;
             if(n>100)
                n = 100 ;
        }
        catch (Exception &exception)
        {
             n = 4 ;
        }
        for(i=0;i<Now().FormatString("nnss").ToInt();i++)
            random(n) ;
        for(i=0;i<n;i++)
        {
            rt: t = random(n);
            for(j=0;j<n;j++)
            {
                if(t == r[j])
                    goto rt ;
            }
            r[i] = t ;
        }
        Edit3->Text = "" ;
        for(i=0;i<n;i++)
            Edit3->Text = Edit3->Text + String(r[i]) + " " ;
    }
    //---------------------------------------------------------------------------