Ok, voor de "verandering" eens een bizarre vraag.
Als achtergrond: mijn collega is programmatuur lessen aan het volgen en moet dus opdrachtjes maken en blabla, 1 van die opdracht compileert netjes en doet zelfs wat er van verwacht wordt. MAAR volgens mij zou het het helemaal niet mogen compileren (en volgens zijn prof trouwens ook niet).
De vraag is dus: iemand die een idee heeft wat er hier gebeurt want ik word er knetter van
We hebben een struct voor een student, er staat meer in maar ik haal enkel wat er nodig is uit.
We roepen via qsort een compare functie op voor een lijst van studentjes
En we hebben tenslotte een compare functie, die als doel heeft de studenten te ordenenen op alfabetische volgorde voor de familienaam en indien er zijn met dezelfde familienaam op tegen-alfabetische(?) volgorde op de voornaam.
Mijn probleem met die code is:
- niet elk pad heeft een return value
- als we de middelste if blok weghalen wordt er nog steeds correct geranschikt op voornaam.
extra info: hij werkt met het programme "Code Blocks" als IDE.
Als achtergrond: mijn collega is programmatuur lessen aan het volgen en moet dus opdrachtjes maken en blabla, 1 van die opdracht compileert netjes en doet zelfs wat er van verwacht wordt. MAAR volgens mij zou het het helemaal niet mogen compileren (en volgens zijn prof trouwens ook niet).
De vraag is dus: iemand die een idee heeft wat er hier gebeurt want ik word er knetter van
We hebben een struct voor een student, er staat meer in maar ik haal enkel wat er nodig is uit.
code:
1
2
3
4
5
6
| struct student { char nom [21]; char prenom [21]; } typedef struct student ETUDIANT |
We roepen via qsort een compare functie op voor een lijst van studentjes
code:
1
| qsort(tab,nrbetudiants,sizeof(ETUDIANT),comparenom); |
En we hebben tenslotte een compare functie, die als doel heeft de studenten te ordenenen op alfabetische volgorde voor de familienaam en indien er zijn met dezelfde familienaam op tegen-alfabetische(?) volgorde op de voornaam.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| int comparenom (const void* a, const void* b) { ETUDIANT *ia = (ETUDIANT*)a; ETUDIANT *ib = (ETUDIANT*)b; if (strcmp (ia->nom, ib->nom) == 0) { if (strcmp(ia->prenom,ib->prenom) != 0) { return strcmp(ib->prenom,ia->prenom); } } } |
Mijn probleem met die code is:
- niet elk pad heeft een return value
- als we de middelste if blok weghalen wordt er nog steeds correct geranschikt op voornaam.
extra info: hij werkt met het programme "Code Blocks" als IDE.