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 tre alternativ till uppgift. Ni ska välja och lösa en av uppgifterna nedan.
Uppgiften ska vara inlämnad senast klockan 08:00 den 14:e december 2022.
Inlämning görs i Canvas under Hand-in assignment/inlämning.
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
Algoritmer och funktionsobjekt
Uppgiften handlar om att skriva ett program för att interaktivt filtrera en ordlista för att hitta en lösning till ordspelet Wordle.
Uppgiften ger främst träning på standardalgoritmer och funktionsobjekt, samt strängar och strömmar.
Uppgiften finns här: inl-wordle.pdf
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.