動的配列リストをソートしようとしていますが、機能せず、どうすればよいかわかりません。これは私がこれまでに行ったことです:
void ascending_sort(Controller* ctrl)
{
int i,j;
Cost* aux;
DynamicVector* c=getAllCosts(ctrl);
for(i=0;i<getLen(c)-1;i++)
{
Cost* cost;
for(j=i+1;j<getLen(c);j++)
{
if(cost[i].sum < cost[j].sum)
{
aux=cost[i]; //error
cost[i]=cost[j];
cost[j]=aux; //error
}
}
}
}
構造体は次のとおりです。
typedef struct{
char* day;
char* type;
int sum;
}Cost;
どうすれば修正できますか?「Cost* aux」を宣言するとき、何か間違ったことをしていると思います。あなたが私を助けてくれることを願っています!
編集:ソート機能の新しいコードを更新しました。今、私が望むものを印刷しません。「Cost 1」と表示され、それ以外は何も表示されず、すべてを停止する「プログラムの終了」ウィンドウが表示されます。何が問題なのですか?
これは新しいソート アルゴリズムです。
void ascending_sort(Controller* ctrl)
{
int i,j;
DynamicVector* c=getAllCosts(ctrl);
for(i=0;i<getLen(c)-1;i++)
{
Cost* cost=getElementAtPosition(c,i); //returns element on position
for(j=i+1;j<getLen(c);j++)
{
if(cost[i].sum < cost[j].sum)
{
const Cost aux=cost[i];
cost[i]=cost[j];
cost[j]=aux;
}
}
}
}
これは印刷機能です: //この機能はコンソールにあります
void PrintCosts(Console* console)
{
DynamicVector* CostList=getAllCosts(console->ctrl);
if (getLen(CostList))
{
int i;
for(i=0;i<getLen(CostList);i++)
{
printf("\nCost %d\n\n",i+1);
Cost *c=(Cost*)getElementAtPosition(CostList,i);
PrintCost(c);
}
}
else printf("No cost in the list!");
}
これは、コントローラーからコンソールへの並べ替え関数を呼び出す関数です。
void AscendingSort(Console* console)
{
ascending_sort(console->ctrl);
}