Opgaver i denne lektion  forrige -- Tastaturgenvej: 'p'        Gå til slide, hvor denne opgave er tilknyttet -- Tastaturgenvej: 'u'  

Opgave 12.2
Sortering af et array af bøger


Programmer en funktion, sort_books_by_title, som kan kaldes på variablen shelf fra programmet på den tilhørende slide. Tag udgangspunkt i dette program. Overfør også indekset af den sidste bog som en parameter til sort_books_by_title, således at sorteringsfunktionen ved hvor mange bøger, der skal sorteres:

  void sort_books_by_title(book shelf[], int last){
    qsort(shelf, last+1, ..., ...);
  }

Som antydet af funktionsnavnet, skal funktionen ordne bøgerne således at titlerne kommer i alfabetisk orden. Efter sorteringen er den første bog således 'C by Dissection', og den sidste bog er 'The C Programming Language'. Sorteringen skal foregå ved at bytte om på bøgerne i arrayet (ikke ved at danne en ny, sorteret kopi af arrayet).

Ved løsningen af denne opgave skal du anvende funktionen qsort fra stdlib.h, som tidligere har været beskrevet i dette undervisningsmateriale.

Programmer dernæst en funktion sort_books_by_kind_and_year. Denne funktion skal primært sortere bøgerne således at alle skønliterære bøger kommer før lærebøgerne (university text books). Inden for begge disse grupper skal funktionen sekundært sortere bøgerne efter udgivelsesår. Relativt til eksemplet på den tilknytede side i undervisningsmaterialet skal det give følgende ordning på bøgerne:

Title: Pelle Erobreren
Year: 1910
University text book: no

Title: Ditte Menneskebarn
Year: 1917
University text book: no

Title: The C Programming Language
Year: 1988
University text book: yes

Title: C by Disssection
Year: 2001
University text book: yes

Title: Problem Solving and Program Design in C
Year: 2010
University text book: yes

Afprøv begge sorterings-funktionerne på de fem bøger i variablen shelf.


Løsningen til denne opgave er pt. ikke frigivet