I'm having some problems with this function. Its main purpose is to sorts the array of classes(below) in descending order by the number of sections. Here is the array of classes:
CIS_CLASSES *pCls, *pLast;
CIS_CLASSES clsList[NUM_CLS] =
{
{"CIS 35A", 2, {61, 63}},
{"CIS 35B", 1, {62}},
{"CIS 41A", 3, {1, 2, 61}},
{"CIS 28", 1, {61}},
{"CIS 22C", 4, {3, 4, 61, 63}},
{"CIS 26B", 1, {61}},
{"CIS 22B", 8, {1, 2, 3, 4, 6, 61, 62, 63}},
{"CIS 29", 1, {61}},
{"CIS 22A", 8, {1, 3, 5, 6, 7, 8, 61, 63}},
};
I've also defined NUM_CLS using struct:
#define NUM_CLS 9
typedef struct
{
char course[10];
int noSections;
int sections[16];
int final;
} CIS_CLASSES;`
Here is the function :
void sortDescend(CIS_CLASSES list[], CIS_CLASSES *pLast);
{
CIS_CLASSES *pCurr;
CIS_CLASSES *pWalk;
for (pCurr = list- 1; pCurr < pLast; pCurr++)
{
CIS_CLASSES temp = *pCurr;
pWalk = pCurr - 1;
while (pWalk >= 0 && temp.final > pLast->list[pWalk].final)
{
pLast->list[pWalk + 1] = pLast->list[pWalk];
pWalk--;
}
pLast->list[pWalk + 1] = temp;
}
}
}
When I try to run this code I get the error message: no member named 'list' in 'CIS_CLASSES'. But I don't understand why? and How can I make it run? Please let me know if I'm missing anything!
pLast->list[pWalk]?CIS_CLASSES list[]and then you definepCurr = list- 1but it makes no sense to subtract 1 from an array. Even if it did make sense it would give you a pointer to some memory BEFORE the start of the array (memory that you shouldn't be touching). Then you definepWalk = pCurr - 1;so pWalk is now a pointer to some other memory BEFORE the start of the array (memory that you shouldn't be touching). Then you use that pWalk pointer as an index to the array. But pointers are not array indexes so that part is wrong. I am not sure what you actually meant to do...