Till KTH:s startsida Till KTH:s startsida

Laboration 9

water

Ny deadline för labb 9
Det finns en extratid för redovisning av labb 9 på torsdag 10 november kl 12-15 i Spelhallen (plan 5 D-huset). 

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 i Kattis 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.

Linda Kann skapade sidan 12 juli 2016

Lärare Linda Kann ändrade rättigheterna 12 juli 2016

Kan därmed läsas av lärare och ändras av lärare.

Lärare Linda Kann ändrade rättigheterna 7 oktober 2016

Kan därmed läsas av alla och ändras av lärare.
En användare har tagit bort sin kommentar
kommenterade 5 november 2016

Hej Linda!

Vi har fastnat på test 3/4 i Kattis. Vi har provat väldigt många olika typer av både fel och svåra molekyler som skall bli rätt, och allt fungerar som det ska.

Kan du kolla på ID:1489279 om du har något tips på hur vi kan komma vidare?

Lärare kommenterade 6 november 2016

(Om någon undrar så löste Sebastian problemet själv och blev godkänd av Kattis en timme senare.)

kommenterade 6 november 2016

Hej! 

Vi har också kört fast på test 3/4 och har svårt att veta vad det är som inte funkar. 

Skulle du kunna kolla på inlämnings ID: 1494799

Tack på förhand!

Vänliga hälsningar,

Erik och Jakob

Lärare kommenterade 6 november 2016

"Felaktig andra bokstav" är inte ett giltigt felmeddelande, se Sample Output i lydelsen

kommenterade 6 november 2016

Hej, 

Jag får fel på test 2/4 i Kattis. ID: 1495289. Jag har testat med all testdata från uppgiften och det funkar så vet inte var felet ligger.

Tacksam för hjälp!

Hälsningar, 

Kajsa

Lärare kommenterade 6 november 2016

@Kajsa Ledsen, jag kan inte se din inskickning - gissar att du inte har anslutit dig till tildah16 i Kattis.

kommenterade 6 november 2016

Tack för hjälpen Linda!

kommenterade 6 november 2016

Hej Linda, 

Jag tror inte jag var med i gruppen. Testa om det funkar nu med ID 1495706

Tack!!

Lärare kommenterade 6 november 2016

@Kajsa: Kolla stavningen av utskrifterna (kopiera gärna från Sample Output i lydelsen)

En användare har tagit bort sin kommentar
kommenterade 8 november 2016

Test case 3/4: Wrong Answer

Mitt program ger perfekt svar på båda samples.  Ingen aning.

En användare har tagit bort sin kommentar
Lärare kommenterade 8 november 2016

@Daniel:

Om du vill att jag ska titta på din inlämning måste du ansluta dig till kursen tildah16 på Kattis.

kommenterade 8 november 2016

Hej Linda!

Vi fastnar på test case 3/4 och undrar om du kan titta på vår kod, tack! 1499265

/Oscar

kommenterade 8 november 2016

Ansluten!

Lärare kommenterade 8 november 2016

@Daniel: Jämför er funktion num med vad som står i syntaxen. Vilka tal accepterar syntaxen?

kommenterade 8 november 2016

Tack så mycket, Linda.

kommenterade 9 november 2016

Hej Linda
Jag fastnar också på test case 3/4, vore supertacksam om du vill ge lite vägledning. ID 1500738. Tack på förhand
/Hampus 

En användare har tagit bort sin kommentar
kommenterade 9 november 2016

Hej! Även vi fastnar på case 3 trots att vi testat alla inputs samt ovan givna förslag på lösningar. Skulle du vilja ta en kik och ge lite vägledning? ID 1500801

Tack på förhand! 

//Amanda o Sara

Lärare kommenterade 9 november 2016

@Hampus:

peek() på en tom kö fungerar inte

Lärare kommenterade 9 november 2016

@Amanda: Jag har inte rätt att se 1500801. Är det Sara som skickat in?

kommenterade 9 november 2016

Märkligt, det är jag som skickat in. Detta ID kanske fungerar 1500776

Lärare kommenterade 9 november 2016

@Amanda: Den kan jag se!

Titta på kontrollen av giltiga atomer.

kommenterade 9 november 2016

Hej Linda, 

vi fastnar också på 3/4,  ID 1501398

//Jennie och Catja

Lärare kommenterade 9 november 2016

@Jennie: Ni är nästan klara med tredje testallet! Prova komplicerade formler av olika slag, flera parentesnivåer inuti och efter varann.

kommenterade 9 november 2016

Hej Linda,

Jag har också fastnat på det tredje testet men fattar inte vad som är fel, ID1501493.

//Emil

kommenterade 9 november 2016

Hej Linda

Får fel på första testet fast sample 1 och 2 fungerar. ID: 1501557

Mvh

En användare har tagit bort sin kommentar
kommenterade 9 november 2016

Hej Linda,

Jag får också fel på tredje testet och jag kan inte se vad jag gör för fel. ID: 1502302

Mvh,

Joel Thunander

En användare har tagit bort sin kommentar
Lärare kommenterade 9 november 2016

@Emil @Adin @Joel Ni är inte anslutna till tildah16 i Kattis så jag kan inte se era inlämningar.

kommenterade 9 november 2016

Nu är jag registrerad.

Lärare kommenterade 9 november 2016

@Joel:

Gär raise SyntaxError så fort du ser att det är fel. Plocka inte ut nåt ur kön (för då får man ut mindre information om vad som är fel).

kommenterade 9 november 2016

Jag förstår inte, för jag trodde mitt program redan gjorde raise SyntaxError så fort det blev fel. Måste man inte plocka ut ett tecken ur kön för att sedan kunna kolla på nästa?

Mvh,

Joel

En användare har tagit bort sin kommentar
Lärare kommenterade 9 november 2016

@Joel:

Jo, men jag ser i din kod att du gör dequeue direkt följt av raise SyntaxErrror.

kommenterade 9 november 2016

Är registrerad nu

//Adin

Lärare kommenterade 9 november 2016

@Adin:

Kolla att utmatningen för Sample Input 1 blir exakt det som står i rutan Sample Output 1

kommenterade 9 november 2016

Hur blir det med labbredovisningen imorgon (10/11) om en eller båda inte kan komma in och redovisa sin labb pga vädret?

Lärare kommenterade 9 november 2016

Då får ni höra av er imorgon!