请帮忙看一下这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]