0

我不知道如何使排序选择起作用。我必须按升序对结构中的分数(双打)进行排序。

这是我的代码,我会评论我在哪里得到错误。

我的结构:

struct diveInfo   
{
    string diversName;
    double totalScore;
    double totalScore;
    double diff;
    double scores[NUM_SCORES];
};

我按升序对分数进行排序的功能:

void selectionSort(diveInfo *ptr,  int size)
{
    diveInfo temp;

    double minValue;

    int startScan;
    int minIndex;

    for ( startScan = 0; startScan < (size - 1); startScan++)
    {
        minIndex = startScan;
        minValue = ptr[startScan].scores; //keep getting an error here saying type double cannot be assigned to an entity of type double.
        temp = ptr[startScan];

        for (int index = startScan + 1; index < size; index++)
        {
            if ( ptr[index].scores < minValue) 
            {
                temp = ptr[index];
                minIndex = index;
            }

        }
        ptr[minIndex] = ptr[startScan];
        ptr[startScan] = temp;
    }
}
4

3 回答 3

1

scores是双精度数组,您需要在此数组中指定索引才能访问特定的双精度值。
例如minValue = ptr[startScan].scores[0];

于 2013-04-24T14:17:05.670 回答
1
minValue = ptr[startScan].scores; 

scores是一个双打数组。arrayname 也充当指针。scoresdouble*[精确地可以指向大小数组的类型NUM_SCORES] 您正在分配一个double指向 int 的指针。

于 2013-04-24T14:19:52.170 回答
0

您正在尝试将 double*(双精度数组是双精度 *)分配给双精度。

您可以尝试将双打数组更改为双打数组vector。然后您可以使用std::sort或对它们进行排序std::stable_sort

于 2013-04-24T14:17:20.627 回答