GJØVIK INGENIØRHØGSKOLE

Like dokumenter
KONTINUASJONSEKSAMEN

GJØVIK INGENIØRHØGSKOLE

Grunnleggende datakunnskap og programmering. EKSAMENSDATO: 16. desember 1997

E K S A M E N. - Kontroller at alle oppgavearkene er tilstede. - Les hele oppgaveteksten nøye, før du begynner å besvare noe som helst.

K O N T I N U A S J O N S E K S A M E N

Høgskolen i Gjøvik E K S A M E N. FAGLÆRER: Frode Haug KLASSE: 1 AA / AE

Kontinuasjonseksamen

E K S A M E N 96HINDA / 96HINDE (1 AA / AE)

Høgskolen i Gjøvik. Avdeling for elektro- og allmennfag K O N T I N U A S J O N S E K S A M E N. EKSAMENSDATO: 8. august 1995 TID:

Høgskolen i Gjøvik Institutt for informatikk og medieteknikk E K S A M E N. Grunnleggende programmering

Grunnleggende datakunnskap, programmering og datastrukturer 97HINDA / 97HINDB / 97HDMUA

Høgskolen i Gjøvik. Avdeling for elektro- og allmennfag K O N T I N U A S J O N S E K S A M E N. EKSAMENSDATO: 11. august 1995 TID:

KONTINUASJONSEKSAMEN

Kontinuasjonseksamen

E K S A M E N. Grunnleggende datakunnskap og programmering 02HIND*, 02HINE*, 02HDMU*, 02HING*, 02HGEOMAA, 02HSIV5

E K S A M E N. Algoritmiske metoder I. EKSAMENSDATO: 11. desember HINDA / 00HINDB / 00HINEA ( 2DA / 2DB / 2EA ) TID:

E K S A M E N. EKSAMENSDATO: 15. desember 1994 TID: Kladd og oppgavearkene leveres sammen med besvarelsen. Kladd merkes med "KLADD".

UNIVERSITETET I OSLO

E K S A M E N. Grunnleggende programmering 03HBIND*, 03HBINFA, 03HBINE*, 03HBMETEA, 03HBMEMAA, 03HBGEOA

KONTINUASJONSEKSAMEN

KONTINUASJONSEKSAMEN

Kontinuasjonseksamen

Kontinuasjonseksamen

KONTINUASJONSEKSAMEN

E K S A M E N. Algoritmiske metoder I. EKSAMENSDATO: 11. desember HINDA / 99HINDB / 99HINEA / 00HDESY ( 2DA / 2DB / 2EA / DESY )

E K S A M E N. Grunnleggende datakunnskap og programmering 99HINDA / 99HINDB / 99HINEA 99HDMUA / 99HDMUB / 99HINGA

KONTINUASJONSEKSAMEN

E K S A M E N. Grunnleggende datakunnskap og programmering. EKSAMENSDATO: 7. desember HINDA / 00HINDB / 00HINEA 00HDMUA / 00HDMUB / 00HINGA

Eksamen. Grunnleggende programmering. EKSAMENSDATO: 6.desember 2016 TID: 16:00 20:00. (kalkulator er ikke tillatt)

Del 1 En oversikt over C-programmering

Høgskolen i Gjøvik. Avdeling for elektro- og allmennfag E K S A M E N. EKSAMENSDATO: 12. desember 1995 TID:

Kontinuasjonseksamen

KONTINUASJONSEKSAMEN

E K S A M E N. Grunnleggende datakunnskap og programmering 98HINDA / 98HINDB / 98HINEA 98HDMUA / 98HDMUB / 98HINGA

KONTINUASJONSEKSAMEN

EKSAMEN. Algoritmiske metoder I KLASSE: 97HINDA / 97HINDB ( 2DA / 2DB )

UNIVERSITETET I OSLO

Eksamen. Objekt-orientert programmering KLASSE(R): 02HIND* 02HDMU* 02HINE* 02HING* 01HINGA 02HSIV5 02HGEOMAA

Kontinuasjonseksamen

UNIVERSITETET I OSLO

Høgskolen i Gjøvik Avdeling for informatikk og medieteknikk E K S A M E N. Grunnleggende programmering

Kontinuasjonseksamensoppgave i IMT1082 Objekt-orientert programmering

Kontinuasjonseksamen

UNIVERSITETET I OSLO

Høgskolen i Gjøvik Avdeling for informatikk og medieteknikk E K S A M E N. Grunnleggende programmering

Høgskolen i Gjøvik Avdeling for informatikk og medieteknikk. Eksamen. Objekt-orientert programmering

Kapittel 1 En oversikt over C-språket

KONTINUASJONSEKSAMEN

Høgskolen i Gjøvik Institutt for informatikk og medieteknikk E K S A M E N. Grunnleggende programmering

E K S A M E N. Grunnleggende datakunnskap og programmering. EKSAMENSDATO: 5. desember HIND*, 01HINE*, 01HDMU*, 01HING* TID:

Kontinuasjonseksamensoppgave i IMT1082 Objekt-orientert programmering

KONTINUASJONSEKSAMEN

Høgskolen i Gjøvik Avdeling for informatikk og medieteknikk E K S A M E N. Grunnleggende programmering

Programmeringsspråket C

UNIVERSITETET I OSLO

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

UNIVERSITETET I OSLO

Høgskolen i Gjøvik. Eksamen. Objekt-orientert programmering 98HINDA / 98HINDB / 98HINEA 98HDMUA / 98HDMUB

Eksamen. Objekt-orientert programmering 04HBIND*, 04HBINFA, 04HBMETEA

Kontinuasjonseksamen

UNIVERSITETET I OSLO

Kontinuasjonseksamen

UNIVERSITETET I OSLO

Kontinuasjonseksamen

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

UNIVERSITETET I OSLO

Kontinuasjonseksamen

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Eksamen. Objekt-orientert programmering. EKSAMENSDATO: 25. mai HINDA / 99HINDB / 99HINEA 99HDMUA / 99HDMUB TID: Høgskolen i Gjøvik

Kontinuasjonseksamen

Eksamen. Objekt-orientert programmering

UNIVERSITETET I OSLO

TDT4100 Objektorientert programmering

Høgskolen i Gjøvik Institutt for informatikk og medieteknikk E K S A M E N. 04HBIND* / 04HBINFA / div. andre

EKSAMENSOPPGAVE. INF-1100 Innføring i programmering og datamaskiners virkemåte. Ingen. Elektronisk (WiseFlow) Robert Pettersen

Høgskolen i Gjøvik Avdeling for informatikk og medieteknikk E K S A M E N. Grunnleggende programmering

Eksamensoppgave i IMT1082 Objekt-orientert programmering

UNIVERSITETET I OSLO

Kontinuasjonseksamen

Høgskolen i Gjøvik Avdeling for informatikk og medieteknikk E K S A M E N. Grunnleggende programmering

Høgskolen i Gjøvik Avdeling for informatikk og medieteknikk. Eksamen. Objekt-orientert programmering

Kontinuasjonseksamen

UNIVERSITETET I OSLO

Kontinuasjonseksamen

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl

Eksamen 00HINDA / 00HINDB / 00HINEA 00HDMUA / 00HDMUB

Algoritmer og Datastrukturer

UNIVERSITETET I OSLO

Oppgavesettet består av 7 sider, inkludert denne forsiden. Kontroll& at oppgaven er komplett før du begynner å besvare spørsmålene.

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Kontinuasjonseksamen

UNIVERSITETET I OSLO

lfæ~~~~:::j~~:~l -.~=:~-t::-d I Alle trykte og håndskrevne EKSAMENSOPPGA VE Side l av 5 Eksamenstid:

Eksamen IN1010/INF1010 våren 2018

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Transkript:

GJØVIK INGENIØRHØGSKOLE Postboks 191-2801 GJØVIK KANDIDATNUMMER: E K S A M E N FAGNAVN: FAGNUMMER: Programmering i C++ / Pascal / C LO154A, LO151A og LO142A EKSAMENSDATO: 7. juni 1994 TID: 09.00-14.00 FAGLÆRER: Frode Haug KLASSE: AA/AE ANTALL SIDER UTLEVERT: TILLATTE HJELPEMIDLER: 6 (inkludert denne forside) Alle trykte og skrevne. NB! - Det er tillatt å føre med blyant (men skriv pent). - Kladd og oppgavearkene leveres sammen med besvarelsen. Kladd merkes med "KLADD". - Kontroller at alle oppgavearkene er tilstede. - Les hele oppgaveteksten nøye, før du begynner å besvare noe som helst. - IKKE SKRIV NOE AV DIN BESVARELSE PÅ OPPGAVEARKENE. - HUSK KANDIDATNUMMER PÅ ALLE ARK.

NB: Denne eksamenoppgave er felles for tre ulike kurs (nemlig programmering i C++, Pascal og C). Disse har også ulike kursnumre. Besvar derfor i det språket som er relevant for den eksamenen du skal ta. Oppgaveteksten er utformet såpass generell at den skal være uavhengig av programmeringsspråket som blir brukt. Der det allikevel har vært nødvendig å skille, er dette markert med et innrykket avsnitt, som starter med "C++:", "Pascal:" og/eller "C:". F.eks: C++: Dette er en tekst som kun gjelder de som løser oppgaven i C++. Oppgaven i korthet Oppgaven går i korthet ut på å lage en indeks for et dokument. Hvilke nøkkelord som skal være med i indeksen er lagret på filen "KEYWORD.DTA", ett på hver linje (se vedlegg 1). Programmet spør brukeren om hvilket dokument som skal leses (se vedlegg 3). Ut fra dette dokumentet og de aktuelle nøkkelord, så lages en indeks (som skrives til fil) med angivelse av hvilke sider de ulike nøkkelordene forekommer på (se vedlegg 2). Filen "KEYWORD.DTA" inneholder maksimalt 50 ulike ord. Disse er usortert. Nøkkelordene er alltid skrevet med store bokstaver, både i "KEYWORD.DTA" (jfr. vedlegg 1) og i den filen det skal leses fra/lages indeks for (jfr. vedlegg 3). Antall sider ett og samme nøkkelord forekommer på er ukjent/"ubegrenset". Sideskift er i filen markert med tegnet ''. Dette tegnet forekommer ikke andre steder i dokumentet. Din oppgave er å lage et program med hovedprogram, datastruktur og funksjoner som tilfredsstiller det nedenfor skrevne. LES HELE TEKSTEN NØYE FØR DU BEGYNNER Å BESVARE OPPGAVENE. Oppgave 1 - Datastruktur og hovedprogram: a) Skriv de class'er / record'er / struct'er og deres innmat (data) som du har bruk for. b) Skriv andre globale variable som du trenger (f.eks: arrayer/tabeller og filnavnet til det dokumentet som skal leses inn). c) Tegn opp datastrukturen. (Gjør dette ordentlig!) d) Skriv hovedprogrammet som: - gjør kall til funksjonene i oppgave 2-5. - ber om og leser filnavnet som input-dokumentet er å finne på. Denne teksten er kun det før '.' i filnavnet. F.eks: "DOK1" i filnavnet "DOK1.DTA". 2

NB: For å få et fullverdig program, så er det ikke sikkert at det er nok at du kun koder de funksjonene som er angitt i de nedenforstående oppgavene. Det er mye mulig at du også må lage noen tilleggsfunksjoner. Spesielt gjelder dette for de som løser oppgaven i C++, der det vil være naturlig med funksjoner inni class'ene. Alle disse nødvendige funksjonene skal også angis som en del av besvarelsen. Oppgave 2 - Lesing av filen "KEYWORD.DTA": Lag funksjonen "les_nokkelord". Funksjonen skal lese alle nøkkelordene fra filen "KEYWORD.DTA", og legge disse inn i den valgte datastrukturen (jfr. oppgave 1). Det ligger ett ord på hver linje, og maksimalt 50 stk. på filen. C++: Pascal/C: Husk at setningen "innfil >> tekst" vil hente den neste tegnsekvensen (uten blanke) fra filen referert til av 'innfil' inn i bufferen 'tekst'. For enkelthets skyld så antar vi at du har tilgjengelig en funksjon som heter "hent_ord(...)" som henter neste tegnsekvensen (uten blanke) fra filen som er angitt av parametreen '...'. Hvordan denne parameteren brukes trenger du ikke å bry deg om, bare skriv "hent_ord(...)" inni den løkka som går og leser fra den aktuelle åpne filen. Oppgave 3 - Lesing av dokumentfilen: Lag funksjonen "les_dokument". Funksjonen skal lese inn ett og ett ord fra filen som brukeren angav i hovedprogrammet (jfr. oppgave 1d). Denne filen har alltid extension lik ".DTA". Dersom det innleste er et av nøkkelordene, og det ikke allerede er funnet på den aktuelle siden, så skal du registrere dette i datastrukturen din. Sidenumre skal komme i stigende rekkefølge. Husk at: - et nøkkelord kan forekomme på et ukjent antall sider. - sideskift er markert med tegnet ''. - det er kun nøkkelord skrevet med store bokstaver som gjelder. (Dvs. at ordene på "KEYWORD.DTA" og input-fila er helt identiske.) - når du leser fra filen, må til selv bygge sammen filnavnet ut fra det innlest i oppgave 1d og tillagt extension ".DTA". Hint: Bruk samme metode for innhenting av neste tegnsekvens som under oppgave 2. 3

Oppgave 4 - Skriving av filen med indeks: Lag funksjonen "skriv_indeks". Funksjonen skal gå gjennom datastrukturen og skrive ut alle nøkkelordene og sidene de forekom på. Sidenumrene skal adskilles med ',', unntatt etter den siste (jfr. vedlegg 2). Hele utskriften skal gå til filen angitt av navnet i oppgave 1d + extension ".RES". Vi antar at vi får plass til alle sidenumrene på en og samme linje. (Dette med sorterte nøkkelord og '-' kommer vi tilbake til i de to neste oppgavene.) Oppgave 5 - Sortering av nøkkelordene: Lag funksjonen "sorter_nokkelord". Ordene på filen "KEYWORD.DTA" ligger usortert (jfr. vedlegg 1). Lag en funksjon som sorterer disse. Denne kalles etter at funksjonen i oppgave 2 er utført, men før at funksjonen i oppgave 3 kalles. Oppgave 6 - Forbedret indeks: Endre funksjonen "skriv_indeks". Når ett og samme nøkkelord forekommer på flere etterfølgende sider, så kunne det være fint å ikke bare liste opp alle disse sidene (som i oppgave 4), men skrive dette noe mere kompakt. Når et nøkkelord derfor forekommer på to eller flere etterfølgende sider så skal dette istedet skrives som: <nummeret på første side i sekvensen> - <nummeret på siste side i sekvensen> (jfr. vedlegg 2). Endre funksjonen "skriv_indeks" slik at den ivaretar dette. Diverse: - Vi antar at de to filene det skal leses fra virkelig finnes, at de har et innhold (dvs. ikke er tomme), og at deres format (utseende) er som beskrevet ellers i oppgaven. - Gjør dine egne forutsetninger dersom du finner oppgaveteksten upresis eller ufullstendig. Gjør i så fall rede for disse forutsetningene. - C++: Skulle det være nødvendig, så bruk gjerne LISTTOOL.H. Lykke til (og god sommer)! FrodeH 4

Vedlegg 1: Filen "KEYWORD.DTA": PRIVATE CHAR CLASS CONST ELSE PROTECTED PUBLIC BREAK CASE ENUM FLOAT NEW DO RETURN VITUAL VOID SHORT STATIC STRUCT FOR IF INT LONG SWITCH WHILE Vedlegg 2: Eksempel på resultatfilen (indeksen): BREAK 5-6, 9, 11 CASE 2-3, 5-6, 9, 11 CHAR 1, 4, 7-9, 12, 14 CLASS 4, 9, 12, 14 CONST 9, 12, 14 DO 1, 3-9, 13 ELSE 3, 5, 9, 12, 14 ENUM 1-3, 5, 7, 9, 11, 13 FLOAT 1-3, 5, 7, 9-11, 13 FOR 4, 9-10, 13 IF 4, 7, 9-10, 13 INT 2, 4, 7, 9, 11, 13 LONG 2-4, 6-7, 9, 11, 13 NEW 1-5, 7, 9-11, 13 PRIVATE 1, 4, 7-9, 12, 14 PROTECTED 3, 5-6, 9, 12 PUBLIC 5-6, 9, 12 RETURN 1, 3, 5-9, 13 SHORT 9, 13 STATIC 9-10, 13 STRUCT 9-10, 13 SWITCH 1-4, 6-7, 9, 11, 13 VITUAL 1, 3, 5-6, 9, 13 VOID 5-6, 9, 13 WHILE 1-4, 6-7, 9, 11, 13 5

Vedlegg 3: Eksempel på filen som leses (er input til programmet): PRIVATE CHAR dette er meningsløst ENUM FLOAT NEW ENUM NEW. DO dette er meningsløst RETURN VITUAL SWITCH WHILE. CASE ENUM FLOAT NEW dette er meningsløst dette er meningsløst. INT dette er meningsløst LONG SWITCH WHILE LONG. ELSE. PROTECTED. CASE. ENUM dette er meningsløst FLOAT NEW. DO dette er meningsløst RETURN VITUAL LONG SWITCH dette er meningsløst WHILE. dette er meningsløst dette er meningsløst PRIVATE CHAR CLASS NEW. DO dette er meningsløst FOR IF INT LONG SWITCH WHILE FORTE. ELSE PROTECTED PUBLIC BREAK CASE ENUM FLOAT NEW. DO RETURN VITUAL VOID dette er meningsløst dette er meningsløst. PROTECTED PUBLIC BREAK dette er meningsløst dette er meningsløst CASE. DO RETURN dette er meningsløst VITUAL VOID LONG SWITCH WHILE. PRIVATE CHAR ENUM FLOAT NEW dette er meningsløst dette er meningsløst. DO RETURN dette er meningsløst IF INT LONG SWITCH WHILE. PRIVATE dette er meningsløst dette er meningsløst dette er meningsløst CHAR. DO dette er meningsløst dette er meningsløst. dette er meningsløst RETURN. PRIVATE CHAR CLASS CONST ELSE PROTECTED PUBLIC BREAK CASE ENUM FLOAT NEW DO RETURN. VITUAL VOID SHORT STATIC. STRUCT FOR IF INT LONG SWITCH WHILE. dette er meningsløst dette er meningsløst FLOAT NEW. STATIC dette er meningsløst dette er meningsløst STRUCT FOR IF BREAK CASE dette er. meningsløst dette er meningsløst ENUM. FLOAT NEW. INT LONG dette er meningsløst dette er meningsløst SWITCH WHILE. PRIVATE CHAR CLASS. CONST ELSE PROTECTED PUBLIC dette er meningsløst BREAK. ENUM dette er. meningsløst FLOAT NEW NEW NEW NEW NEW IF IF IF IF DO RETURN VITUAL VOID SHORT STATIC STRUCT FOR IF INT LONG SWITCH WHILE. PRIVATE CHAR CLASS. dette er meningsløst CONST ELSE. dette er meningsløst dette er meningsløst DO RETURN VITUAL. 6