请大家帮我转一下到C#,小弟一直没学过C++.可现在需要把下面的转为C#..请帮看一下.谢谢这个是保存的.这里不知是什么意思..
      for(i=0; i<Nboard; i++){
        s=&board[i];
        fputc(s->sign[0]*3 + s->sign[1] + '0', f); //这行
      }
下面是打开上面保存的内容
              for(s=board, p=buf+12;  s<board+Nboard;  s++, p++){
                v=*p-'0';
                if(v<0 || v>8){ err=11; break; }
                if(pass){
                  greater=1;
                  putSign(v/3,s,0);
                  putSign(v%3,s,1);
                }
              }void putSign(int q, Tsquare *s, int k)
{
  if(!s->neighbour[k]){
    assert(!q);
    return;
  }
  if(q){
    if(!s->sign[k]) Nsign++;
  }else{
    if(s->sign[k]) Nsign--;
  }
  s->sign[k]= BYTE(q);
  s->neighbour[k]->sign[k^2]= BYTE(q ? 3-q : 0); //这行不知是什么意思..
}还有以下的:
template <class T> inline void aminmax(T &x,int l,int h){
 if(x<l) x=l;
 if(x>h) x=h;
}template <class T> inline void amax(T &x,int h){
 if(x>h) x=h;
}template <class T> inline void amin(T &x,int l){
 if(x<l) x=l;
}谢谢...

解决方案 »

  1.   

    C#: 
         for(i=0; i<Nboard; i++){
            s=board[i];//board应该是个结构数组
            fputc(s.sign[0]*3 + s.sign[1] + '0', f); //这行似乎是存下一个相对字符'0'进行偏移的字符,s.sign[0]*3 + s.sign[1]是偏移参数,这个参数又是存于board[i]结构数组中的,你给的信息不完整。
          }
    s->neighbour[k]->sign[k^2]= BYTE(q ? 3-q : 0)就是说q是否是0否则返回3-q,是则返回0,然后强制转成BYTE,将此值赋给s->neighbour[k]->sign[k异或00000010]
      

  2.   

    //判断X是否在(l,h)否则x=l(x<l时),x=h(x<h时)
    template <class T> inline void aminmax(T &x,int l,int h){
     if(x<l) x=l;
     if(x>h) x=h;
    }template <class T> inline void amax(T &x,int h){
     if(x>h) x=h;
    }template <class T> inline void amin(T &x,int l){
     if(x<l) x=l;
    }
    C++中一般说模版,C#中一般说泛型,但C#中好像没内联函数一说,所以要定义泛型类
    class re
      

  3.   

    Class ReSet_X<T>
    {
    public void ReSet_X();
    public void aminmax(T &x,int l,int h){
     if(x<l) x=l;
     if(x>h) x=h;
    }
    public void amax(T &x,int h){
     if(x>h) x=h;
    }public void amin(T &x,int l){
     if(x<l) x=l;
    }}
      

  4.   

    非常谢谢lx20010的回答..以下这一串是:fputc(s->sign[0]*3 + s->sign[1] + '0', f); 这生的...
    000000000000002000000002603000000001030000100000000000000000300000020500060000000
    不知用putSign这里的还原是多少...可以用C#还原出来吗..谢谢
      

  5.   

    s.sign[0]*3 + s.sign[1] + '0' 我看这是每次生成一个数字的...有0到9的数字..如果
    s.sign[0]*3 + s.sign[1] + '0' = 2  那这S等于多少呢?
      

  6.   

    C#:
     for(int i=12,s=board, p=buf[i];  s<board+Nboard;  s++, i++){
                    v=p[i]-'0';
                    if(v<0 || v>8){ err=11; break; }
                    if(pass){
                      greater=1;
                      putSign(v/3,s,0);
                      putSign(v%3,s,1);
                    }
                  }void putSign(int q, Tsquare s, int k)
    {
      if(!s.neighbour[k]){
        assert(!q);
        return;
      }
      if(q){
        if(!s.sign[k]) Nsign++;
      }else{
        if(s.sign[k]) Nsign--;
      }
      s.sign[k]= BYTE(q);
      s.neighbour[k].sign[k^2]= BYTE(q ? 3-q : 0); 
    }
      

  7.   

    如果s.sign[0]*3 + s.sign[1] + '0' = '2'
    则s.sign[0]=0,s.sign[1]=2              for(s=board, p=buf+12;  s<board+Nboard;  s++, p++){
                    v=*p-'0';
                    if(v<0 || v>8){ err=11; break; }
                    if(pass){
                      greater=1;
    //下面所做的工作是把如8这样的的数还原成s->sign[0]=2, s->sign[1]=2,写入时必然就是
    s->sign[0]×3+s->sign[1](“ fputc(s.sign[0]*3 + s.sign[1]//就是前面这一段 + '0', f); ”)
                      putSign(v/3,s,0);
                      putSign(v%3,s,1);
                    }
                  }void putSign(int q, Tsquare *s, int k)
    {
      if(!s->neighbour[k]){
        assert(!q);
        return;
      }
      if(q){
        if(!s->sign[k]) Nsign++;
      }else{
        if(s->sign[k]) Nsign--;
      }
      s->sign[k]= BYTE(q);
      s->neighbour[k]->sign[k^2]= BYTE(q ? 3-q : 0); //这行还原的东西很奇怪,如果是字符’8‘还原的就s->neighbour[0]->sign[2]=1,s->neighbour[0]->sign[3]=1,但如果是’9‘还原的就是s->neighbour[0]->sign[2]=0,s->neighbour[0]->sign[3]=0,你给的信息就只能读出这么多了
    }
      

  8.   

    000000000000002000000002603000000001030000100000000000000000300000020500060000000
    长度还原肯定是2倍长了
    然后依下表
    '0'->00
    '1'->01
    '2'->02
    '3'->10
    '4'->11
    '5'->12
    '6'->20
    '7'->21
    '8'->22
    '9'->30