Till KTH:s startsida Till KTH:s startsida

Övning6

Hemuppgifter

  1. Som statistiskt mått på en mängd tal används ibland typvärdet, d.v.s. det värde som är mest frekvent (oftast förekommande). Skriv en procedur som beräknar typvärdet för data i en array med heltal. Om flera värden är lika vanliga skall proceduren ge det minsta av dem.

  2. Skriv en metod för att en lista med positiva och negativa tal ordnas så att de negativa talen kommer först och sedan de positiva. Negativa respektive positiva tal behöver inte vara sorterade, du behöver endast samla alla negativa tal för sig. Använd inte en extra array, problemet kan lösas ändå. Indata ska vara en array med tal (exempelvis heltal men det spelar ingen roll). Din metod ska göra så att de negativa talen kommer före de positiva. Metoden ska gå i linjär tid, det är alltså inte meningen att arrayen ska sorteras!

  3. Olle sitter och rättar ett tentatal. Tentatalet går ut på att man ska skriva en grammatik för meddelande av följande typ:
    Båt 42, båt 73, båt 4711 och båt 17 ska in!
    Båt 1 och båt 2 ska in!
    Båt 13 ska in!

    Vilken eller vilka av följande alternativ kan producera dessa meddelanden? Motivera varför de övriga inte kan producera dem (ange exempel på meddelanden som inte kan produceras).
    En del av alternativen kan producera oönskade meningar, man vill t.ex. inte ha
    Båt 1 och båt 2, båt 3 och båt 4 ska in!
    Vilken eller vilka av alternativen kan producera oönskade meningar? Ge exempel.

    <meddelande> ::= Båt <tal><svans> | <meddelande> båt <tal><svans>

    <svans> ::= och | ska in! | , 
    <tal> ::= 1 | 2 | 3 | ... 

    <meddelande> ::= Båt <tal> ska in! | Båt <tal> <svans> 
    <svans> ::= och båt <tal> ska in! | , båt <tal> <svans> 
    <tal> ::= 1 | 2 | 3 |... 

    <meddelande> ::= Båt <tal><svans> 
    <svans> ::= ska in! | , båt <tal> | och båt <tal> 
    <tal> ::= <svans> | 1 | 2 | 3 |... 

    <meddelande> ::= Båt <tal><svans> | båt<tal><svans> 
    <svans> ::= ska in! | , | och 
    <tal> ::= 1 | 2 | 3 | ...

     

Uppgift på övningen

sortering

Stefan Nilsson skapade sidan 10 januari 2017

En användare har tagit bort sin kommentar
kommenterade 16 februari 2017

Vad menas på uppgift 2 med att metoden ska gå i linjär tid? är det andra krav på uppgiften än att man inte ska använda sig utav en till array?

hälsningar

Fanny

kommenterade 18 februari 2017

Om jag har förstått rätt, så tror jag att med linjär tid, så menar de att arrayen ej ska sorteras i nummerordning, t.ex:
En array som skapas från början: {1, -5, 6, -4, 8, 9, 4, -2}

Linjär tid: {-5, -2, -4, 8, 9, 1, 4, 6} (Siffrorna sorteras inte efter nummerordning, bara negativa tal och positiva tal för sig}

Ej linjär tid: {-5, -4, -2, 1, 4, 6, 8, 9} (Siffrorna sorteras i nummerordning)

Rätta mig om jag har fel!

kommenterade 22 februari 2017

Förstår inte notationen på uppgift 3, är det något vi gått igenom på övning/föreläsning? Finns det någon länk som förklarar hur notationen fungerar?

kommenterade 22 februari 2017

Angående linjär tid betyder det att programmet ska ha komplexitet O(n), det vill säga att antalet beräkningar ska öka linjärt med indatan. Man kan ungefär tänka att det inte ska få finnas några "loopar i loopar", så det ska fungera med en enda loop.

Lärare kommenterade 22 februari 2017

Anton, ja linjär betyder att algoritmen ska gå på O(n) tid i värstafall, där n är antalet element i vektorn.

Lärare kommenterade 22 februari 2017

Anton, notationen i uppgift 3 beskriver en grammatik. Notationen kallas för BNF eller Backus-Naur-form. Jag pratade lite grann om grammatiker (BNF och EBNF) på föreläsningen förra veckan.

En användare har tagit bort sin kommentar