您的位置:首页 > 编程语言 > C#

数组之间转换的一个算法(C#)

2007-12-10 20:27 274 查看
最近手上一个物料管控项目遇到这样一个问题。如果拆解手机A中零件,然后来组装手机B,这个过程中拆下A手机的零件有一部份可能在组装B手机的时候需要用到,但有一部份,组装B手机只能从仓库重新领过,还有被拆下A的手机部分零件B是不需要的,所以要退还仓库。

问题大概如此,现在将问题转换为数组,在拆A手机时候拆下的零件如下记录形式

拆解下来的物料表A

序号index
料号id
料号name
用量
1
100504
按键
4
2
300456
前盖
1
3
400153
后盖
1
要组装的B手机需要的物料表

序号index
料号id
料号name
用量
1
100504
按键
4
2
400153
后盖
1
3
500145
电池
1
4
600157
棉花泡子
2
5
600183
天线
1
我们先利用二维数组AA存储A物料表的信息,BB数组存储B物料表的信息,然后写个算法,得到如下CC数组。

序号index
料号id
料号name
用量
1(A,B共有)
100504
按键
4
2(A,B共有)
400153
后盖
1
3(B有A没有)
500145
电池
1
4(B有A没有)
600157
棉花泡子
2
5(B有A没有)
600183
天线
1
6(A有B没有)
400153
后盖
1
设计算法如下:


public bool FindStingArray(string [,] AA,string straa)




...{


int k=0;


for (int i=0;i<AA.GetLength(0);i++)




...{


if (AA[i,1]!=straa)




...{


k++;


}


}


if(k==AA.GetLength(0))




...{


return false;


}


else




...{


return true;


}


}


public void ConvertArray(string [,] AA,string [,] BB,string [,] CC)




...{


int k=0;


for (int i=0;i<AA.GetLength(0);i++)




...{


//如果AA[i,1]在BB数组中


if (FindStingArray(BB,AA[i,1]))




...{


CC[k,0]=(k+1).ToString();


CC[k,1]=AA[i,1];


CC[k,2]=AA[i,2];


CC[k,3]=AA[i,3];


k++;


}


}


for (int i=0;i<BB.GetLength(0);i++)




...{


//如果BB[i,1]不在AA数组中


if (!FindStingArray(AA,BB[i,1]))




...{


CC[k,0]=(k+1).ToString();


CC[k,1]=BB[i,1];


CC[k,2]=BB[i,2];


CC[k,3]=BB[i,3];


k++;


}


}


for (int i=0;i<AA.GetLength(0);i++)




...{


//如果AA[i,1]不在BB数组中


if (!FindStingArray(BB,AA[i,1]))




...{


CC[k,0]=(k+1).ToString();


CC[k,1]=AA[i,1];


CC[k,2]=AA[i,2];


CC[k,3]=AA[i,3];


k++;


}


}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: