Jag har en labbuppgift i en C programmeringskurs och har problem. Den första algoritmen borde väl gå att fixa utan några större problem. Det beror lite på hur labyrinterna kan vara uppbyggda. Hjälp! Har problem med uppgift i C
Jag har en labyrint som jag ska kolla hur många möjliga sätt det är att hitta igenom den. Labyrinten representeras av en matris maze[x][x][x]. Nu ska jag med hjälp av en rekursiv funktion kolla hur många möjliga sätt det finns att gå genom matrisen. Jag har inte kommit på någon bra algoritm för detta.
Det andra problemet jag har är en XML liknande fil som jag ska läsa in. Ett litet utdrag ur filen ser ut så här:
<key>Tracks</key>
<dict>
<key>33</key>
<dict>
<key>Year</key><integer>2003</integer>
<key>Date Modified</key><date>2003-10-25T15:36:50Z</date>
<key>Date Added</key><date>2003-10-25T08:56:54Z</date>
<key>Bit Rate</key><integer>256</integer>
<key>Sample Rate</key><integer>44100</integer>
<key>Play Count</key><integer>3</integer>
...
Nu vet jag inte hur jag ska parsa denna fil. Jag kan läsa in filen rad för rad men sen vet jag inte hur jag ska göra. Sen funderar jag också på hur jag ska lagra värdena. Tänkte ha en strukt med två arrayer key[] och value[] men vet inte riktigt om det är bra eller inte. Kanske ska ha en variabel för varje värde som förekommer i filen istället? Tex. int Year osv.
Det är C och inte C++ som jag skriver i.Sv: Hjälp! Har problem med uppgift i C
Jag ger lite generella råd, så klarar du det nog. Återkom annars...
1. Om det inte finns risk att du hamnar i loopar (det är en "snäll" labyrint). Troligtvis är det den du har.
Låt säga att du står i en viss position. Du måste ju naturligtvis ha tagit dig dit på något sätt, det får du ha någon information om. (förra rutan, riktning, etc.)
Sen finns det några val av riktningar att gå (naturligtvis inte bakåt). För varje val så skickar du in den nya positionen och den gamla. Du måste natuligtvis hålla reda på hur många lösningar det finns, etc., men det tror jag du fixar.
2. Om du kan komma tillbaka i samma spår. Det kan leda till att du hamnar i en oändlig loop, och det gör det mycket svårare.
Metoden är i stort att om du har gått i ruta A, B, C, D och sen kan gå till ruta E eller F, så skickar du hela listan (ABCD) på något sätt till funktionerna som tar hand om E och F.
Har lite ont om tid, men kan förklara mer om du inte får ihop det.