2013-04-24 3 views
0

Я не могу понять, как получить выбор сортировки. Мне нужно отсортировать баллы (удваивания) из структуры в порядке возрастания., используя сортировку с массивом структур в C++

Вот мой код, я буду комментировать, где я получаю ошибки.

Моя структура:

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; 
    } 
} 
+0

баллы - это массив. Вы, возможно, хотите сортировать на totalScore? Вам нужно подумать о том, что вы делаете. Должно быть ясно, что присвоение массива двойников двойному не представляется возможным. – john

ответ

1

scores является массивом двойников, необходимо указать индекс в этом массиве для доступа к определенному двойному значению ,
Например minValue = ptr[startScan].scores[0];

0

Вы пытаетесь присвоить двойному * (массив удвоений двойной) к двойному.

Вы можете попробовать изменить массив двухместных номеров в парном разряде vector. Затем вы можете отсортировать их с помощью std::sort или std::stable_sort.

1
minValue = ptr[startScan].scores; 

scores представляет собой массив двухместных номеров. arrayname действует как указатель. scores имеет тип double* [точно тот, который может указывать на массив размером NUM_SCORES] Указатель double указатель на int.

Смежные вопросы