三重的排序該怎麼寫?该怎么解决
三重的排序該怎麼寫?
我要寫一段程式來整理資料,因我是初學者想不到什麼方法?可以給我一個方向,謝謝
檔案大約如下
公司 部門 編碼
A K 55
c K 11
B Z 80
A Y 22
B Y 65
整理後 匯出
公司 部門 編碼
A Y 22
A K 55
B Y 65
B Z 80
c K 11
排列方式
1.先把公司整理出來由A~C
2.再整理該公司的部門 K~Z
3.再把該部門的編碼由小到大排序
請問這樣怎麼寫比較好
我有想過就硬拆,用struct
typedef struct Company
{
CString dep;
int data;
};
先讀資料後,
Company A[100], B[100], C[100] ;
//公司分類
switch(讀的公司){
case 'A':
A[i].dep= 讀到部門;
A[i].data= 讀到編碼;
++i;
break;
case 'B':
B[j].dep= 讀到部門;
B[j].data= 讀到編碼;
++j;
break;
case 'C':
......}
//部門分類
switch(A[i].dep){
case 'K':
dataK[h]=A[i].data;
++i;
++h;
break;
case 'Z':
dataZ[n]=B[j].data;
++j;
++n;
break;
case 'Y':
......}
然後再一個個印出來
可是這方法,不太好,可我想不出其他方法了?請還有其他方法整理嗎?
------解决方案--------------------
struct data
{
CString comp;
CString depart;
int code;
bool largerdata(data &p)//这个叫谓词
{
if(comp>p.comp)
{
return 1;
}else if(comp>p.comp)
{ //第二字段
if(depart>p.comp)
{
return 1;
}else if(depart==p.comp)
{//比较第3字段,自己模仿写
}else
{
return 0;
}
}else
{
return 0;
}
}
}
vector <data> datavec;
我要寫一段程式來整理資料,因我是初學者想不到什麼方法?可以給我一個方向,謝謝
檔案大約如下
公司 部門 編碼
A K 55
c K 11
B Z 80
A Y 22
B Y 65
整理後 匯出
公司 部門 編碼
A Y 22
A K 55
B Y 65
B Z 80
c K 11
排列方式
1.先把公司整理出來由A~C
2.再整理該公司的部門 K~Z
3.再把該部門的編碼由小到大排序
請問這樣怎麼寫比較好
我有想過就硬拆,用struct
typedef struct Company
{
CString dep;
int data;
};
先讀資料後,
Company A[100], B[100], C[100] ;
//公司分類
switch(讀的公司){
case 'A':
A[i].dep= 讀到部門;
A[i].data= 讀到編碼;
++i;
break;
case 'B':
B[j].dep= 讀到部門;
B[j].data= 讀到編碼;
++j;
break;
case 'C':
......}
//部門分類
switch(A[i].dep){
case 'K':
dataK[h]=A[i].data;
++i;
++h;
break;
case 'Z':
dataZ[n]=B[j].data;
++j;
++n;
break;
case 'Y':
......}
然後再一個個印出來
可是這方法,不太好,可我想不出其他方法了?請還有其他方法整理嗎?
------解决方案--------------------
struct data
{
CString comp;
CString depart;
int code;
bool largerdata(data &p)//这个叫谓词
{
if(comp>p.comp)
{
return 1;
}else if(comp>p.comp)
{ //第二字段
if(depart>p.comp)
{
return 1;
}else if(depart==p.comp)
{//比较第3字段,自己模仿写
}else
{
return 0;
}
}else
{
return 0;
}
}
}
vector <data> datavec;