无法按C中的组排序数据

时间:2017-04-27 17:25:18

标签: c

这是我的一些代码,它应该从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和金额也匹配。

0 个答案:

没有答案