日期:2014-05-19  浏览次数:20770 次

请帮忙看一下这C++到C#..
请大家帮我转一下到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;
}

谢谢...

------解决方案--------------------
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]