在C中按组排序数据时遇到问题
这是我的一些代码,它应该从J,S,然后M排序,但我的代码只打印最后一个值。我也需要清洁它,但我能做到。我只需要帮助按组对其进行排序,以便正确打印。 每当我尝试打印它时,它只打印所有位置的70072890.58 J在C中按组排序数据时遇到问题,c,C,这是我的一些代码,它应该从J,S,然后M排序,但我的代码只打印最后一个值。我也需要清洁它,但我能做到。我只需要帮助按组对其进行排序,以便正确打印。 每当我尝试打印它时,它只打印所有位置的70072890.58 J void sortData(int* id, double* amt, char* desig, int Size) { if(Size<=13) { int i; int j; double tempAmt;
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
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
无效排序_数据(int*、double*、char*、int):
int*-包含所有有效帐户ID的整数指针
double*-包含所有相应有效金额的双指针
char*-包含所有相应有效名称的字符指针
int–有效记录数(请记住,这不能再是13)
现在,您需要根据名称对它们进行分组,第一组必须有初级组(J),然后第二组必须有高级组(S),最后一组必须是高级组(M)。请记住,您不是按升序或降序排序,而是按组排序。分组时交换指定的位置时,请确保分组后帐户ID和金额也匹配 欢迎来到堆栈溢出!听起来您可能需要学习如何使用a来逐步完成代码。有了一个好的调试器,您可以逐行执行您的程序,并查看它偏离预期的地方。这是一个必要的工具,如果你要做任何编程。进一步阅读:。解决方案可以使用结构吗?不,我们还没有了解结构。无数组表示法所有指针表示法排序将经过数组末尾1。比较需要在大小之前停止1。您的交换位置似乎也偏离了1,并且会随机进行,但如果没有调试,我不能确定。我认为需要的是一些逻辑,只有在您实际找到“J”或“S”时才进行交换。然后您还需要一个案例来分组“M”。欢迎使用堆栈溢出!听起来您可能需要学习如何使用a来逐步完成代码。有了一个好的调试器,您可以逐行执行您的程序,并查看它偏离预期的地方。这是一个必要的工具,如果你要做任何编程。进一步阅读:。解决方案可以使用结构吗?不,我们还没有了解结构。无数组表示法所有指针表示法排序将经过数组末尾1。比较需要在大小之前停止1。您的交换位置似乎也偏离了1,并且会随机进行,但如果没有调试,我不能确定。我认为需要的是一些逻辑,只有在您实际找到“J”或“S”时才进行交换。然后你也需要一个案例来分组“M”。
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