GJØVIK INGENIØRHØGSKOLE

Like dokumenter
KONTINUASJONSEKSAMEN

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

Kontinuasjonseksamen

GJØVIK INGENIØRHØGSKOLE

Grunnleggende datakunnskap og programmering. EKSAMENSDATO: 16. desember 1997

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

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.

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

KONTINUASJONSEKSAMEN

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: 8. august 1995 TID:

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

Kontinuasjonseksamen

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

KONTINUASJONSEKSAMEN

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

Kontinuasjonseksamen

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

KONTINUASJONSEKSAMEN

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

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

Kontinuasjonseksamen

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

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

Kontinuasjonseksamensoppgave i IMT1082 Objekt-orientert programmering

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

Kontinuasjonseksamen

Kontinuasjonseksamen

Kontinuasjonseksamen

KONTINUASJONSEKSAMEN

Kontinuasjonseksamensoppgave i IMT1082 Objekt-orientert programmering

Kontinuasjonseksamen

Eksamen. Objekt-orientert programmering

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

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

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

Kontinuasjonseksamen

Kontinuasjonseksamen

Kontinuasjonseksamen

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

Kontinuasjonseksamen

Kontinuasjonseksamen

Kontinuasjonseksamen

Kontinuasjonseksamen

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

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 E K S A M E N. Grunnleggende programmering

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 E K S A M E N. Grunnleggende programmering

Eksamensoppgave i IMT1082 Objekt-orientert programmering

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

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

Eksamensoppgave i IMT1082 Objekt-orientert programmering

Kontinuasjonseksamen

Kontinuasjonseksamen

KONTINUASJONSEKSAMEN

Kontinuasjonseksamensoppgave i IMT1031(F) Grunnleggende programmering

Eksamen. Objekt-orientert programmering

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

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

Kontinuasjonseksamen

Kontinuasjonseksamen

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

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

Kontinuasjonseksamen

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

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

E K S A M E N. Grunnleggende programmering 04HBIND*, 04HBINE*, 04HBINFA, 04HBMETEA, 04HBGEOA. ANTALL SIDER UTLEVERT: 8 (inkludert denne forside)

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

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:

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

Kontinuasjonseksamen

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

HØYSKOLEN I OSLO, AVDELING FOR INGENIØRUTDANNING

Kontinuasjonseksamen

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

Eksamen 01HIND* / 01HINE* / 01HDMU*

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

KONTINUASJONSEKSAMEN

UNIVERSITETET I OSLO

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

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

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

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

KONTINUASJONSEKSAMEN

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

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

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

KONTINUASJONSEKSAMEN

UNIVERSITETET I OSLO

KONTINUASJONSEKSAMEN

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

Programmering i C++ Løsningsforslag Eksamen høsten 2005

Transkript:

GJØVIK INGENIØRHØGSKOLE Postboks 191-2801 GJØVIK KANDIDATNUMMER: K O N T I N U A S J O N S E K S A M E N FAGNAVN: FAGNUMMER: Programmering i C++ LO154A EKSAMENSDATO: 12. august 1994 TID: 09.00-14.00 FAGLÆRER: Frode Haug KLASSE: 1 AA/AE ANTALL SIDER UTLEVERT: TILLATTE HJELPEMIDLER: 8 (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.

Innledning/bakgrunn Nå som sommeren er over og det raskt bærer mot mørkere, kaldere og mere snøfylte tider, så passer det helt supert med en oppgave om julegaveønsker. Dette har sin bakgrunn i: Nissan Julin er navnet til den berømte julenissen på Nordpolen. (Hans merkelige navn kommer rett og slett av at han har japansk mor og svensk far. Disse opplysningene om navnet skal det snart vise seg er totalt uinteressante for løsningen av eksamensoppgaven.) Som den smånisse du er, så arbeider du selvsagt i Nissan's julegaveverksted. Her trives du svært godt, og selvom arbeidsdagene er lange og harde, så synes du selv at du har et utfordrende, interessant og ikke minst variert arbeide (for husk, det er mange ulike gaver som skal produseres fram til juleaften hvert år). I dine unge nisseår tilbrakte du noen tvilsomme år i Norge, nærmere bestemt ved ingeniørhøgskolen på Gjøvik. Nå skal det snart vise seg at dette ikke var helt bortkastet. Nissan har nemlig innsett at datateknologien snart også bør få innpass i hans nisseverden. Derfor har han tittet litt i eksamenspapirene fra sine smånissers utdannelse. Til sin store glede så oppdager Nissan at nettopp du er personen som skal hjelpe ham! For av papirene dine så leser han at du har eksamen i "Programmering i C++". (Og løser du denne eksamensoppgaven til "ståkarakter", så vil Nissan om noen år kunne lese at du klarte nettopp det. Dette var innfløkt!!??) Oppgaven i korthet Programmet som Nissan ønsker seg går i korthet ut på å holde orden på julegaveønskene for ulike personer, og hvilke av disse som eventuelt (ikke) er ferdig produsert. Han vil at programmet skal være menydrevet (se "main" i vedlegget), og at det skal være mulig å: - registrere ønskene fra en person - få en liste over personer som har et spesielt ønske - produsere/innvilge et ønske - få en liste over ønsker som ennå ikke er produsert/innvilget. - få vite status for en person (hvilke ønsker (ikke) innvilget) - skrive/lese hele datastrukturen til/fra fil Nissan er en allsidig nisse, og kan mer enn å kjøre rundt med slede og reinsdyr. Derfor har han laget ferdig hovedrisset for programmet. (Dette finner du i vedlegget til denne oppgaveteksten.) Din oppgave blir derfor å lage resten av innmaten til klassene og funksjonene som tilfredsstiller det nedenfor skrevne. 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 andre funksjoner (det vil spesielt være naturlig med funksjoner inni class'ene). Alle disse nødvendige funksjonene skal også angis som en del av besvarelsen. 2

Datastrukturen Nissan er en riktig multikunstner, derfor har han også angitt hvordan datastrukturen skal være. Det skal være en liste av ønsker. For hvert ønske skal det være en sideliste med personer som har dette ønsket. (Dvs. samme utseende på datastrukturen som i obligatorisk oppg. nr.3, våren 1994.) NB: Pga. de funksjonene som skal operere på datastrukturen (jfr. oppgave 1-7), så er dette den mest hensiktsmessige datastrukturen. Dvs. den skal ikke bestå av en liste med personer, der det for hver person er angitt hva han/hun ønsker seg. Les hele oppgaveteksten, og studer vedlegget nøye før du starter med å løse oppgavene 1-7. Det er strengt tatt ikke nødvendig med definisjon av flere variable i klassene eller hovedprogrammet for å løse oppgaven (men du trenger helt sikkert lokale/automatiske variable inni funksjoner og medlemsfunksjoner). Oppgave 1 - Registrere ønsker: Skriv innmaten til funksjonen "Nytt_onske". Funksjonen skal be om navnet til personen som har ønskene, og navnet på opptil 10 ulike ønsker. Alt dette skal lagres i datastrukturen. Husk på at ønsket kan være nytt, eller at det allerede finnes i datastrukturen. Husk også at data om personen lagres som en sideliste under hvert ønske. Oppgave 2 - Personer med spesielt ønske: Skriv innmaten til funksjonen "Hvem_har_onsket". Funksjonen ber om navnet på et ønske. Dersom dette finnes i listen, så skrives det ut om dette ønsket er produsert/innvilget, og en liste over de personene som ønsker seg dette. Dersom ønsket ikke finnes i listen, skal programmet si fra om dette. Oppgave 3 - Produser/innvilg et ønske: Skriv innmaten til funksjonen "Innvilg_onske". Funksjonen ber om navnet på et ønske. Dersom dette finnes i listen, så registreres det at dette ønsket er ferdig produsert/innvilget. Dersom ønsket ikke finnes i listen, skal programmet si fra om dette. 3

Oppgave 4 - Hva ennå ikke produsert/innvilget: Skriv innmaten til funksjonen "Onsket_men_ikke_innvilget". Funksjonen skal gå gjennom alle ønskene og skrive navnet på de ønskene som ennå ikke er ferdig produsert/innvilget. (Dette er et menyvalg som Nissan velger når han vil ha oversikt over hva som ennå ikke er ferdig produsert i hans gaveverksted. Dermed kan han lettere planlegge sine smånissers videre arbeide utover mot jul.) Oppgave 5 - Status for en person: Skriv innmaten til funksjonen "Status_for_person". Funksjonen skal be om et personnavn. Deretter skal den gå gjennom alle ønskene og skrive ut, dersom personen har ønsket seg vedkommende ønske, om det er innvilget eller ei. (Dette er er menyvalg som brukes når masende små (og store) barn (snille eller ei) ringer Nissan for å få svar på hvordan "det ligger an" med innfrielse av gaveønskene.) Oppgave 6 - Skriv datastrukturen til fil: Skriv innmaten til funksjonen "Til_fil". Skriv hele datastrukturen til fil(er). Som en del av besvarelsen: tegn opp/beskriv filformatet. Oppgave 7 - Les datastrukturen fra fil: Skriv innmaten til funksjonen "Fra_fil". Les inn fra fil og opprett datastrukturen. Det skal leses fra de(n) samme fil(er) som det ble skrevet til i oppgave 6. Om en "gammel" datastruktur allerede finnes i primærhukommelsen så skal denne slettes før innlesning. Vi forutsetter at filen(e) det skal leses data fra virkelig finnes, og at de(n) ikke er tom(me). 4

Diverse: - Skulle det være nødvendig, så bruk gjerne LISTTOOL.H. - Robusthet: programmet skal sjekke at: - all tekstlig input (navn på personer og ønsker) har en lengde, dvs. at ikke kun CR/ENTER/RETURN er tastet. - tallverdier ("antall ønsker" i oppgave 1) er i korrekt intervall. (Programmet trenger ikke å sjekke at tall virkelig er numeriske.) - Vi forutsetter at det er plass til alle data i maskinens primærhukommelse. - Gjør dine egne forutsetninger dersom du finner oppgaveteksten upresis eller ufullstendig. Gjør i så fall rede for disse forutsetningene. Skulle du lykkes med å lage programmet, så har: - også Nissan fått en julegave, fra DEG! - DU fått deg tre nye vekttall, som høstgave (hva nå enn det er for noe)! Lykke til (og god jul)! FrodeH 5

Vedlegg: Hovedrisset av programmet: // Fil: FRODEH\CPP\EXTRAMEN\EX_S94.TPL // Hovedrisset for kontinuasjonseksamen, august 1994 // Laget av Frode Haug, GIH, juni 1994 // Litt endret/modifisert av FrodeH, HiG, våren 2003 // Programmet omhandler registrering av ulike personers julegaveønsker. // Ønskene lagres i en egen liste. Navnene på personene som ønsker seg // hver enkelt gjenstand lagres som en sideliste inne i hver enkelt gjenstand. // INCLUDE: #include <fstream> // #include <iostream> // #include <cstring> // strlen, strcpy, strcmp #include <cctype> // toupper #include listtool.h // Verktøykasse for listehåndtering. using namespace std; // CONST: const int STRLEN = 40; const int MAX_ONSKER = 10; // KLASSER: class Person: public Element { private: char* navn; public: // Lage constructor(er), destructor og medlemsfunksjoner??? ; class Onske: public Text_element { private: List* personer; bool innvilget; public: // Lage constructor(er), destructor og medlemsfunksjoner??? ; 6

// PROSEDYREDEKLARASJON: char les_kommando(); void skriv_meny(); void nytt_onske(); void hvem_har_onsket(); void innvilg_onske(); void onsket_men_ikke_innvilget(); void status_for_person(); void til_fil(); void fra_fil(); List* onsker; int main(void) { char kommando; // GLOBALE VARIABLE: // HOVEDPROGRAM: onsker = new List(Sorted); skriv_meny(); // Skriver brukermeny. kommando = les_kommando(); // Får inn brukers ønske. // Looper til 'Q' tastes: while (kommando!= 'Q') { switch (kommando) { case 'N': nytt_onske(); break; case 'H': hvem_har_onsket(); break; case 'I': innvilg_onske(); break; case 'O': onsket_men_ikke_innvilget(); break; case 'S': status_for_person(); break; case 'T': til_fil(); break; case 'F': fra_fil(); break; default: skriv_meny(); break; kommando = les_kommando(); return 0; // Får inn brukers ønske. // DEFINISJONER AV PROSEDYRER: char les_kommando() { char ch; cout << "\n\n\tkommando (N, H, I, O, S, T, F, Q): "; cin >> ch; cin.ignore(); return toupper(ch); 7

void skriv_meny() { cout << "\n\nfølgende kommandoer er lovlig:"; cout << "\n\tn - Nytt ønske"; cout << "\n\th - Hvem har et spesielt ønske"; cout << "\n\ti - Innvilg et spesielt ønske"; cout << "\n\to - hva er Ønsket, men ikke innvilget"; cout << "\n\ts - Status for en person"; cout << "\n\tt - Til fil"; cout << "\n\tf - Fra fil"; cout << "\n\tq - avslutt"; void nytt_onske() { // Se oppgaveteksten: OPPGAVE 1 void hvem_har_onsket() { // Se oppgaveteksten: OPPGAVE 2 void innvilg_onske() { // Se oppgaveteksten: OPPGAVE 3 void onsket_men_ikke_innvilget() { // Se oppgaveteksten: OPPGAVE 4 void status_for_person() { // Se oppgaveteksten: OPPGAVE 5 void til_fil() { // Se oppgaveteksten: OPPGAVE 6 void fra_fil() { // Se oppgaveteksten: OPPGAVE 7 8