Inlämningsuppgift
Uppgiften
En programmeringuppgift skall göras i C++. Uppgiften skall lösas i grupp om 2 personer och lämnas in gemensamt av varje grupp. I år finns två alternativ till uppgift. Ni ska välja och lösa en av uppgifterna nedan.
Uppgiften ska vara inlämnad senast klockan 08:00 den 17:e december 2021.
Inlämning görs i SAM, se uppgiftsbeskrivningen för instruktioner.
Dispens för att lämna in uppgiften senare än ovan angiven dag kan beviljas om det finns starka skäl. Sådan dispens måste sökas hos kursansvarig i rimlig tid före sista inlämningsdag.
Uppgiftsalternativ
Containers, iteratorer och templates
Uppgiften handlar om att skapa en abstraktion som gör det möjligt att effektivt konkatenera containers utan att faktiskt kopiera några element.
Uppgiften ger främst träning på templates samt iteratorer och datastrukturer.
Uppgiften finns här: inl-concat.pdf
För att testa att man faktiskt inte kopierar något kan man använda en typ som inte går att kopiera. Ett exempel på en sådan finns i NoCopy.h, och ett exempel på hur man skapar en std::vector av denna utan kopiering finns i NoCopyExample.cc
Kortaste vägen i en graf: Dijkstras algoritm
Uppgiften handlar om att implementera klasser för att beskriva en graf samt att implementera Dijkstras algoritm för att hitta kortaste vägen mellan noder i grafen.
Uppgiften ger träning på att implementera klasser och algoritmer enligt en given specifikation och att läsa från fil samt använda standardbibliotekets datastrukturer och algoritmer.
Uppgiften finns här: inl-dijkstra.pdf , exempel på testfall finns i dijkstra-test.tar.gz och en exempel-graf finns i graf.txt
Notera att testfallen bara är exempel och inte utgör ett fullständigt acceptanstest. De behöver därför utökas. Notera också att den givna koden gör antaganden om vad klasser och filer heter. Om det inte stämmer med ditt program behöver du justera testfallen.