Till KTH:s startsida Till KTH:s startsida

Laboration 6 del 2

I denna labb ska du

  • Skriva ett program som läser in molekylformler och kontrollerar om dom är syntaktiskt korrekta, med hjälp av rekursiv medåkning.

Förberedelser

  1. Läs instruktionerna för problemet formelkoll.
  2. Skriv ett testprogram med unittest för den första omgången med testdata (Sample Input 1/Sample Output 1).
  3. Skriv ett testprogram för den andra omgången med testdata (Sample Input 2/Sample Output 2).

Formelkoll

Ditt program ska läsa formeln tecken för tecken och med rekursiv medåkning kolla syntaxen. Rekursiv medåkning innebär att huvudprogrammet först gör anropet readformel(), varefter readformel() anropar readmol() som anropar readgroup() och sedan eventuellt sej själv (men inte om inmatningen är slut eller om den just kommit tillbaka från ett parentesuttryck).

Funktionen readgroup() anropar antingen readatom() eller läser en parentes och anropar readmol() etc - allt enligt grammatiken. När ett syntaxbrott upptäcks genereras en exception (raise Syntaxfel("Saknad högerparentes")) som fångas i huvudprogrammet och där skrivs hela resten av indataraden ut.

Man måste ofta tjuvtitta på nästa tecken i kön (med peek()) för att veta vilken gren man ska följa i syntaxträdet.


Redovisning

Labben lämnas in på kurswebbsidan (se Inlämningsuppgifter i vänstermenyn) och redovisas muntligt av bägge gruppmedlemmarna.

Vid redovisningen ska du kunna

  • Beskriva hur rekursiv medåkning fungerar.
  • Visa hur dina funktioner speglar den givna syntaxen.
  • Förklara varför man inte måste räkna antalet parenteser.

Betyg

Denna labb kan endast ge betyg E. Du måste lämna in den och redovisa den i tid för att få göra labbarna för högre betyg i period 2.

Teacher Linda Kann created page 30 September 2015

commented 2 November 2015

Hej, har problem med Kattis och har ingen aning om vad som är fel. Samtliga testfall i uppgiftsbeskrivningen fungerar (plus en rad andra). Kan man få lite ledning? Submission-ID i Kattis är 921793

commented 3 November 2015

Lugnt, det löste sig

Teacher commented 3 November 2015

@Lukas

Bra att det löste sig!

Jag kunde inte se din submission - kanske har du inte registrerat dig på tilda15 i Kattis?

Se https://kth.kattis.com/courses/DD1320/tilda15/register

commented 3 November 2015

Fixat!

One user removed his/her comment
commented 11 November 2015

Kan vi få lite ledning på hur man ska gå tillväga för att fånga upp slutparenteser " ) "? Det fungerar bra för oss så länge det finns en startparentes så att vi vet att vi söker en slutparentes. Men det är svårare att försöka fånga en felaktig slutparentes eftersom den måste släppas igenom om det redan hittats en startparentes.

Teacher commented 11 November 2015

 Ge ett exempel!

commented 11 November 2015

Exempelvis molekylen "Na)". Vi försökte fånga parentesen i readgroup men då fastnar även korrekta molekyler som "(Na)2".

commented 12 November 2015

Hej Linda! Jag är lite sent ute men undrar om du har några tips på vad för fel man kan kolla efter om man får godkänt på de första två testfallen på Kattis men fastnar på det tredje? Submission 955810 på Kattis!

One user removed his/her comment
commented 12 November 2015

Hej, är också lite sent ute men får inte igenom min genom testfall två, och kan inte för mitt liv komma på vad jag ska leta efter. Submission 956174

commented 12 November 2015

Vi har löst de problemen vi hade tidigare men sitter fast på testfall 3 nu.

commented 12 November 2015

Jag och min partner in crime är också fast på testfall 3, finns det tips någonstans?

commented 12 November 2015

Jag hade stavat fel på de som står i Sample Output 2, kolla att du stavat rätt där.

commented 12 November 2015

Jag hade glömt bort vid radslutet men sitter ni också på testfall 3 med submission 956430

commented 12 November 2015

Vi blev nyss klara. Efter 3 timmar av levande helvete så prövade vi ändra så att vår testfil inte påtvingades encoding via utf-8 och då gick den igenom Kattis. Pröva det ifall du också har gjort så, Trolle.

commented 12 November 2015

OO tack ska prova

Teacher commented 12 November 2015

@Trolle:

Vilka tal har ni testat med?

Teacher commented 12 November 2015

@Herman:

Jag har kollat på era inlämningar och tror att det var talen ni hade problem med också - inte utf-8!

Teacher commented 12 November 2015

@Max:

Grattis!

commented 12 November 2015

Vet inte hur kattis fungerar riktigt men det verkar bland annat spela roll om vi hade blanksteg på rader mellan funktioner. På id 956727 och 956710 hände det. 

Teacher commented 12 November 2015

Nope - det är talinläsningen som är fel där :-)

commented 12 November 2015

linda: får att det tar för långt tid på test 3 

vet inte riktigt vad man skall göra.

allmänhandledaren visste inte heller.

Teacher commented 12 November 2015

Skicka mig idnr

commented 12 November 2015

id: 956988

commented 12 November 2015

förlåt menade id :956991

Teacher commented 12 November 2015

I denna har ni glömt att ändra stidin 

commented 12 November 2015

okej nu har jag nog snurrat bort mig i mig själv :P här har du id: 956595

Teacher commented 12 November 2015

Vilka tal har ni testat med?