这是我的一些代码,它应该从J,S,然后是M,但我的代码只打印最后一个值。我也需要清理它,但我可以这样做。我只是需要帮助按组排序,以便正确打印出来。 每当我尝试打印时,它只会为所有位置打印7007 2890.58 J.
void sortData(int* id, double* amt, char* desig, int Size)
{
if(Size<=13)
{
int i;
int j;
double tempAmt;
int tempId;
char tempDesig;
int check=-1;
for(i=0;i<2;i++)
{
for(j=0;j<Size;j++)
{
if(i==0)
{
if(*(desig+j)=='J')
{
tempDesig= *(desig+j);
tempId= *(id+j);
tempAmt= *(amt+j);
check++;
}
}
if(i==1)
{
if(*(desig+j)=='S')
{
tempDesig= *(desig+j);
tempId= *(id+j);
tempAmt= *(amt+j);
check++;
}
}
*(desig+j)= *(desig+check);
*(desig+check)= tempDesig;
*(amt+j) = *(amt+check);
*(amt+check)= tempAmt;
*(id+j)= *(id+check);
*(id+check)=tempId;
}
}
}
else{
printf("Number of records cant be more than 13\n");
}
}
这些是起始值
ACCOUNTS AMOUNTS DESIGNATION
1001 1591.63 M
1011 1503.54 S
2002 2000.43 M
3332 2567.99 J
2112 3112.67 M
4334 5111.34 S
6134 7172.23 P
9009 4999.00 P
3003 4000.00 S
4004 5000.00 S
5005 3000.00 J
6116 4599.91 S
7007 2890.58 J
这应该是什么样子
ACCOUNTS AMOUNTS DESIGNATION
7007 2890.58 J
5005 3000.00 J
3003 4000.00 S
4004 5000.00 S
6116 4599.91 S
2002 2000.43 M
1001 1591.63 M
2112 3112.67 M
void sort_data(int *,double *,char *,int): int * - 包含所有有效帐户ID的整数指针 double * - 双指针保存所有相应的有效金额 char * - 包含所有相应有效名称的字符指针 int - 有效记录数的计数(记住这不能再是13)
现在,你需要根据指定对它们进行分组,第一组必须有小辈(J),然后第二组必须有老年人(S),最后一组必须是大师(M)。请记住,您没有按升序或降序对任何内容进行排序,而是对它们进行分组排序。在分组时交换指定位置时,请确保在分组后帐户ID和金额也匹配。