Skip to content
Snippets Groups Projects
Verified Commit 934028d1 authored by Eirik Lorgen Tanberg's avatar Eirik Lorgen Tanberg
Browse files

Initial commit

parents
No related branches found
No related tags found
No related merge requests found
Showing
with 422 additions and 0 deletions
Eksamensoppgaver/eksamen_kont_2019/img/3-5_ex.png

411 KiB

Eksamensoppgaver/eksamen_kont_2019/img/3-6_ex.png

371 KiB

Eksamensoppgaver/eksamen_kont_2019/img/3-7_ex.png

21.7 KiB

Eksamensoppgaver/eksamen_kont_2019/img/beskrivelse.png

144 KiB

This diff is collapsed.
Eksamensoppgaver/eksamen_ord_2015/img/3a_ex.png

96.3 KiB

Eksamensoppgaver/eksamen_ord_2015/img/3b_ex.png

44 KiB

Eksamensoppgaver/eksamen_ord_2015/img/3c_ex.png

144 KiB

Eksamensoppgaver/eksamen_ord_2015/img/3d_ex.png

65.1 KiB

Eksamensoppgaver/eksamen_ord_2015/img/4a_ex.png

64.6 KiB

Eksamensoppgaver/eksamen_ord_2015/img/4b_ex.png

87.4 KiB

Eksamensoppgaver/eksamen_ord_2015/img/4c_ex.png

69.9 KiB

Eksamensoppgaver/eksamen_ord_2015/img/4d_ex.png

17.7 KiB

Eksamensoppgaver/eksamen_ord_2015/img/4e_ex.png

94.7 KiB

Eksamensoppgaver/eksamen_ord_2015/img/4f_ex.png

39.5 KiB

Eksamensoppgaver/eksamen_ord_2015/img/4g_ex.png

113 KiB

Eksamensoppgaver/eksamen_ord_2015/img/4h_1_ex.png

31.3 KiB

Eksamensoppgaver/eksamen_ord_2015/img/4h_2_ex.png

32.2 KiB

%% Cell type:markdown id: tags:
# Eksamen 2015 Programmering
**Merk at teori og kodeforståelse ikke er med her.**
Hele eksamen ligger på BlackBoard. Her ligger også funksjoner som var vedlagt oppgaven, som kan være nyttig å bruke mens du arbeider med oppgavene under.
%% Cell type:markdown id: tags:
## *Oppgave 3 Programmering reisetid (20%)*
Skriv funksjonene slik at du kan gjenbruke dem. Hvis du ikke klarer å løse en oppgave kan du likevel gjenbruke funksjoner fra den oppgaven i en senere oppgave.
## Oppgave 3a (5%)
Lag funksjonen **readTime** (ingen input-parametere) som spør brukeren om å skrive inn et klokkeslett med time, minutt og sekund angitt separat som angitt i eksemplet under. Funksjonen skal sørge for at brukeren skriver inn et korrekt klokkeslett (man kan anta at bruker skriver inn et tall og ikke bokstaver). Den skal gi feilmelding ved feil brukerinput og spørre brukeren å oppgi time, minutt eller sekund på nytt hvis tallet ikke er korrekt. Funksjonen skal returnere en liste med tre elementer [hour, minute, sec].
Eksempel på kjøring og på hva som skal skrives ut til skjerm (brukerinput er vist med understrekning og fet skrift):
<img src="img/3a_ex.png" width="700px" align="left">
%% Cell type:code id: tags:
``` python
# Skriv ditt svar her...
```
%% Cell type:markdown id: tags:
## Oppgave 3b (5%)
Lag funksjonen **convertTime** som tar inn to parametere **time** og **mode**. Parameteren **mode** kan ha to verdier: ’time’ eller ’sec’. Hvis mode har verdien ’time’, skal funksjonen konvertere tid angitt i sekunder til tid angitt som en liste på formatet [hour, min, sec] og returnere dette. Hvis mode har verdien ’sec’, skal funksjonen returnere antall sekunder en liste på formatet [hour, min, sec] tilsvarer. Parameteren **time** kan altså både være et heltall og en liste med heltall avhengig av verdien a **mode**.
Eksempel på kjøring:
<img src="img/3b_ex.png" width="700px" align="left">
%% Cell type:code id: tags:
``` python
# Skriv ditt svar her...
```
%% Cell type:markdown id: tags:
## Oppgave 3c (5%)
Lag funksjonen **travelTime** som hverken har input parametere eller returnerer noe. Funksjonen skal først spørre brukeren om et starttidspunkt og deretter et sluttidspunkt for en reise. Funksjonen skal sørge for at det blir lagt inn gyldige tidspunkt. Hvis brukeren prøver å legge inn et sluttidspunkt som er tidligere enn starttidspunktet, skal funksjonen skrive følgende feilmelding:
*”- ERROR: Arrival time must be later than Departure time”*, samt spørre brukeren om et nytt sluttidspunkt. Funksjonen trenger ikke å ta hensyn til reiser som varer over midnatt. Funksjonen skal ikke returnere noe, men skrive ut reisetid angitt i timer, minutter og sekunder som vist under.
Eksempel på kjøring (bruker-input er vist med understrekning og fet font):
<img src="img/3c_ex.png" width="700px" align="left">
%% Cell type:code id: tags:
``` python
# Skriv ditt svar her...
```
%% Cell type:markdown id: tags:
## Oppgave 3d (5%)
Lag funksjonen **analyzeBusRoutes** som tar inn en parameter **BusTables** som er en todimensjonal tabell av heltall der hver rekke inneholder følgende: nummer på bussrute, starttidspunkt (angitt med time, minutt) og sluttidspunkt (angitt med time, minutt). Funksjonen skal ikke returnere noe, men skal skrive ut til skjerm nummer og reisetid på bussruten som tar lengst tid, og nummer og reisetid på bussruten som tar kortest tid som vist i eksempel på kjøring under. Hvis det finnes flere bussruter med samme kjøretid, skal funksjonen skrive ut rutenummer på den første den finner.
Hvis man kjører funksjonen med følgende opplysninger:
- Buss nr. 1, Starttid 15:00, stopptid: 15:19
- Buss nr. 3, Starttid 15:32, stopptid: 16:45
- Buss nr. 4, starttid 15:45, stopptid: 16:23
- Buss nr. 5, starttid 15:55, stopptid: 16:11
vil eksempel på kjøring bli som følger:
<img src="img/3d_ex.png" width="700px" align="left">
%% Cell type:code id: tags:
``` python
# Skriv ditt svar her...
```
%% Cell type:markdown id: tags:
## *Oppgave 4 Programmering Sensur (40%)*
Hvert år tar ca. 2000 studenter ITGK-eksamen, og mye tid går med til å sensurere og sette karakterer. Derfor er det bestemt at det skal programmeres et system som skal hjelpe til med dette. For å sikre at andre universiteter/fag også kan få nytte av programmet bør det gjøres en del generaliseringer.
Du skal lage et system for registrere sensur av eksamen. Eksamen består vanligvis av fire oppgaver som hver teller 25%, 15%, 20% og 40% av karakteren. Den andre oppgaven har tre underoppgaver, den tredje har fire og den fjerde har åtte underoppgaver. Underoppgavene skal vektes slik at hver teller et bestemt antall prosent av hundre.
Det er en fordel å gjenbruke tidligere del-oppgaver der det er mulig. Du kan anta at alle funksjonene mottar gyldige argumenter (inn-verdier), hvis ikke annet er oppgitt.
## Oppgave 4 a) (5%)
Lag starten på hovedprogrammet (ikke funksjon) som lagres i fila **grades.py**. Starten skal bare
inneholde de konstantene som programmet trenger og ikke skrive ut noe til skjerm.
Eksempel på kjøring av Python-programmet **grades** og hvilke verdier NTNU_scores, NTNU_letters, TASKS og WEIGHTS da vil ha etter kjøring:
<img src="img/4a_ex.png" width="700px" align="left">
%% Cell type:code id: tags:
``` python
# Skriv ditt svar her...
```
%% Cell type:markdown id: tags:
## Oppgave 4 b) (5%)
Lag funksjonen **makeArray** som har to inn-parametere (**Numbers** og **Texts**), der **Numbers** er en liste av tall, og **Texts** er en liste av tegn og/eller bokstaver (begge listene har samme lengde). Funksjonen skal returnere en to-dimensjonal tabell (lister i liste) som inneholder all informasjonen fra de to inn-parameterne som vist i eksemplet på kjøring under.
Eksempel på kjøring av funksjonen og hva den skal returnere (med input fra Oppgave 4a) ):
<img src="img/4b_ex.png" width="700px" align="left">
%% Cell type:code id: tags:
``` python
# Skriv ditt svar her...
```
%% Cell type:markdown id: tags:
## Oppgave 4 c) (5%)
Sensor retter eksamen og setter poeng på hver oppgave med en poengsum som går fra og med 0 til og med 10, der 0 er dårligst (0% score) mens 10 er best (100% score). Sensur av en eksamen består av en liste med ett tall for hver deloppgave, i samme rekkefølge som de kommer (dvs. 1,2a,2b, osv.)
Lag funksjonen **computeScore** med inn-parameteren **Points** som er en liste med poengsummer for deloppgavene, og konstanten **WEIGHTS** fra Oppgave 4 a). Funksjonen skal regne ut en totalscore i prosent for en eksamen, basert på vektingen av oppgavene.
Eksempel på kjøring av funksjonen og hva den returnerer:
<img src="img/4c_ex.png" width="700px" align="left">
%% Cell type:code id: tags:
``` python
# Skriv ditt svar her...
```
%% Cell type:markdown id: tags:
## Oppgave 4 d) (5%)
Skriv en funksjon **score2Letter** med to inn-parametere **scoreSum** (prosentvise total-poengsummen for en kandidat fra Oppgave 4 c) ) og **limitLetters**-tabellen fra Oppgave 4b).
Funksjonen skal returnere den høyeste bokstavkarakteren som kandidaten har nok poeng til (uten avrunding). For eksempel vil 40.9 poeng gi F, mens 41.0 poeng gir E.
Eksempel på kjøring av funksjonen og hva den returnerer:
<img src="img/4d_ex.png" width="700px" align="left">
%% Cell type:code id: tags:
``` python
# Skriv ditt svar her...
```
%% Cell type:markdown id: tags:
## Oppgave 4 e) (5%)
Skriv en funksjon **addCandidate** som tar inn tre parametere: **candidateNumber**, **Scores** (en liste), og konstanten **WEIGHTS** fra Oppgave 4a). Funksjonen skal legge til følgende (adskilt med tabulator) som en linje på slutten av en fil med navn '**eksamen.txt**':
**candidateNumber** kommer først på linjen, så alle del-poengsummene fra **Scores**, og til slutt den prosentvise scoren med én desimals nøyaktighet og et linjeskift. Dersom fila ikke finnes, skal den opprettes. Dersom den ikke kan opprettes skal funksjonen avsluttes med Python’s systemgenererte (default) feilmelding .
Eksempel på kjøring av funksjonen og hva den returnerer:
<img src="img/4e_ex.png" width="700px" align="left">
%% Cell type:code id: tags:
``` python
# Skriv ditt svar her...
```
%% Cell type:markdown id: tags:
## Oppgave 4 f) (5%)
Skriv en funksjon **readResultFile** som har en inn-parameter **filename**. Funksjonen skal lese innholdet i fila med navn **filename** som er formatert som beskrevet i Oppgave 4 e) og legge innholdet i en to-dimensjonal tabell der hver rekke inneholder kandidatnummer, alle del-poengsummene og den prosentvise scoren. Kandidatnummer og del-poengsummene skal være av typen heltall, mens den prosentvise scoren skal være av typen flyttall. Funksjonen trenger ikke å håndtere feil som at filen ikke finnes eller filen ikke kan åpnes.
Eksempel på kjøring med fila ”eksamen.txt” med innhold som i Oppgave 4e):
<img src="img/4f_ex.png" width="700px" align="left">
%% Cell type:code id: tags:
``` python
# Skriv ditt svar her...
```
%% Cell type:markdown id: tags:
## Oppgave 4 g) (5%)
Skriv en funksjon **checkResultOK** som tar inn to parametere **filename** (navnet på fila med eksamensresultater som skal sjekkes) og **WEIGHTS** (fra Oppgave 4a) ). Funksjonen skal lese inn fila og returnerer **True** hvis følgende er oppfylt:
- ingen kandidat er listet mer enn en gang i samme fil
- ingen har fått mindre enn 0 poeng eller mer enn 10 poeng på noen oppgave
- den prosentvise poengsummen for alle kandidatene er korrekt utregnet som i Oppgave 4c) over.
Funksjonen skal skrive ut feilmeldinger hvis den finner feil.
Eksempel på kjøring av funksjonen som viser hva den skriver ut og hva den returnerer (fil uten feil):
<img src="img/4g_ex.png" width="700px" align="left">
%% Cell type:code id: tags:
``` python
# Skriv ditt svar her...
```
%% Cell type:markdown id: tags:
## Oppgave 4 h) (5%)
Skriv en funksjon **listAll** med inn-parametere **filename** og **limitLetters**. Funksjonen skal lese inn resultatene fra **filename** med samme formatet som i Oppgave 4e), og skrive ut en liste der hver linje inneholder femsifret kandidatnummer, prosentvis poengsum med ett siffers nøyaktighet og tilhørende bokstavkarakter etter reglene i Oppgave 4d). Kolonnene skal være justert vertikalt som vist her.
<img src="img/4h_1_ex.png" width="700px" align="left">
%% Cell type:markdown id: tags:
Utskriften skal være sortert etter kandidatnummer i stigende rekkefølge. Funksjonens returverdi skal være antallet kandidater som ble skrevet ut.
Eksempel på kjøring av funksjonen, hva den skriver ut, og hva den returnerer:
<img src="img/4h_2_ex.png" width="700px" align="left">
%% Cell type:code id: tags:
``` python
# Skriv ditt svar her...
```
Eksamensoppgaver/eksamen_ord_2016/img/3a_ex.png

36.4 KiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment