ÖREBRO UNIVERSITET. Lösningarna till tentamensuppgifterna sätts ut på kurssidan på nätet i dag kl 13.

Relevanta dokument
Tentamen i Objektorienterad Programmering 5p, Au, D, Fri, Pr,

ÖREBRO UNIVERSITET. Lösningarna till tentamensuppgifterna sätts ut på kurssidan på nätet i dag kl 19.

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl Omtentamen i Programmering C, Fri, Kväll,

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl Tentamen i Programmering C, Fri, Kväll,

Lämna in en ifylld kursvärdering tillsammans med tentan! Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl

ÖREBRO UNIVERSITET. Lösningarna till tentamensuppgifterna sätts ut på kurssidan på nätet i dag kl 13.

Lösningar till uppgifterna sätts ut på kurssidan på nätet idag kl Omtentamen i Programmering C, 5p, A1, D1, E1, Fri, Pr1, Te/Ek1,

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll,

Lösningar till uppgifterna sätts ut på kurssidan och på WebCT (Gamla Tentor) i dag kl 19. Tentamen i Programmering C, 5p, Distans, övriga,

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl 13. Omtentamen i Programmering C, 5p, A1, D1, PA1, Fri,

LÖSNINGSFÖRSLAG TILL Tentamen i objektorienterad programmering i C++ I

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl

Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT / 42

FÖRSLAG TILL LÖSNING AV Tentamen i Objektorienterad programmering C++ I

Lämna in ifylld kursvärdering tillsammans med tentamen! Lösningarna till tentamensuppgifterna sätts ut på kurssidan på nätet i dag kl 13.

5 Arv och dynamisk bindning FIGUR

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen

Innehåll. Introduktion till objektorientering. OOP (objektorienterad programmering) Objekt, instanser, klasser

För alla uppgifter på tentan gäller: Man får använda både standard-c++ (som till exempel har pekare som anges med * och objekt som skapas med new) och

TENTAMEN CD5250. Objektorienterad programutveckling med C++, 5p. Datum: , Tid: 14:00-19:00

Högskolan Dalarna sid 1 av 5 Data-avdelningen Hans-Edy Mårtensson

Programmering i C++ EDA623 Mer om klasser. EDA623 (Föreläsning 6) HT / 26

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs

1 Klasser och objektorientering Vad är objektorientering?

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT / 33

TDIU01 Programmering i C++

Programmering i C++ EDA623 Strömmar och filer. EDA623 (Föreläsning 9) HT / 19

Det objektorienterade synsättet. Objekt. Datorprogrammet kan uppfattas som en slags modell av den verklighet programmet skall samverka med.

Lösningarna till tentamensuppgifterna sätts ut på kurssidan på nätet i dag kl 19.

6 In- och utmatning, strömmar

Klasser. Det är egentligen nu som kursen i programmeringsteknik börjar..., s k objektorienterad programmering.

Grundläggande programmering med C# 7,5 högskolepoäng

Tentamen i. för D1 m fl, även distanskursen. lördag 28 maj 2011

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

Tentamen EDAF30 Programmering i C++

TDDC76 - Programmering och Datastrukturer

Tentamen, EDAA20/EDA501 Programmering

Introduktion till arv

7 Templates och Exceptions

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Datortenta (DAT2)

TDIU20 - Objektorienterad programmering i c++ - föreläsning 4

Föreläsning 4: Filer och strömmar

DD2387 Programsystemkonstruktion med C++ Tentamen 2

Högskolan Dalarna sid 1 av 5 Data-sektionen Hans-Edy Mårtensson

1 Objektorienterad programkonstruktion

Tentamen i Grundläggande programmering STS, åk 1 lördag

Tentamen i Grundläggande programmering STS, åk

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

TDIU01 (725G67) - Programmering i C++, grundkurs

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

TDDC76 - Programmering och Datastrukturer

Nedan skapar vi klassen Person innehållande datamedlemmar för förnamn, efternamn, ålder, längd och vikt:

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

3 Klasser och objekt

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

Laboration 13, Arrayer och objekt

Tentamen i. för D1 m fl, även distanskursen. lördag 26 februari 2011

Datorövning 1. int sgd(int m, int n) { int rest; while ( n!= 0 ) { rest = m % n; m = n; n = rest; return m;

Tentamen *:58/ID100V Programmering i C Exempel 3

TDIU01 - Programmering i C++, grundkurs

Tentamen, EDA501 Programmering M L TM W K V

Del6 Strömmar Ämnesområden denna föreläsning:

DAT043 Objektorienterad Programmering

Grundläggande programmering med C# 7,5 högskolepoäng. Provmoment: Ladokkod: Tentamen ges för: TEN1 NGC011 ADAEK17, ASYST17 samt öppen för alla

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Programmering i C++ EDAF hp. EDAF30 (Föreläsning 2) HT / 18

Tentamen i DD2387 Programsystemkonstruktion med C++

Malmö högskola 2007/2008 Teknik och samhälle

Tentamen Objektorienterad Programutveckling med C++

C++ Slumptalsfunktioner + switch-satsen

Innehåll. Pekaren this Självreferens. Klasser Resurshantering, representation. Överlagring av operatorer. Överlagring av operatorer

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

TDDI14 Objektorienterad programmering

Programmering i C++ EDA623 Mallar. EDA623 (Föreläsning 12) HT / 29

Objektorientering i liten skala

Vad är en klass? Övning 2. Konstruktorer. ffl copy-konstruktorn tar en instans av klassen som. ffl default-konstruktorn tar inga argument och kan

Tentamen. Lösningsförslag

Funktionens deklaration

Tentamen i Programmeringsteknik I, ES,

Övningar Dag 2 En första klass

TDP004. Minne och pekare. Eric Elfving Institutionen för datavetenskap

Operatoröverlagring. endast operatorsymboler definierade i C++ kan överlagras = += -= *= /= %= ^= &= = <<= >>= < > <= >= ==!= && > ->*, [ ] ( )

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

Tentamen EDAF30 Programmering i C++

TDDC76 - Programmering och Datastrukturer

Lösningsförslag till tentamen i EDA011/EDA017 Programmeringsteknik för F, E, I, π och N 25 maj 2009

Del A (obligatorisk för alla)

TDIU20 - Objektorienterad programmering i c++ - föreläsning 3


Tentamen i Programmeringsmetodik, 5p, Au2, D1 och E1,

Tentamen i Programmering

Del3 Klassanvändning, operatorer och pekare Ämnesområden denna föreläsning:

Tentamen i Objektorienterad programmering för ingenjörer (TDBB09) , kl

C++ Lektion Tecken och teckenfält

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Föreläsning 5-6 Innehåll

Transkript:

1(9) ÖREBRO UNIVERSITET INSTITUTIONEN FÖR TEKNIK Lösningarna till tentamensuppgifterna sätts ut på kurssidan på nätet i dag kl 13. Denna tenta kommer att vara färdigrättad Fr 28/1 och kan då hämtas på mitt tjänsterum T2221 mellan kl 15 och 17. Vid detta tillfälle har du också möjlighet att diskutera rättningen. Tentor som ej hämtats då placeras på studentexpedition och då har du ingen möjlighet att klaga på rättningen. Omtentamen i Objektorienterad Programmering 5p, Au, D, E, Fri, Pr, 050122 Hjälpmedel : Inga Tid : 08-13 Ansvarig lärare : Gunnar Joki Tel : arb 303317 hem 274825 mob 070-5474825 Svar till samtliga uppgifter 1-15 ska skrivas på utdelat extra papper. Använd ett papper till uppgifterna 1-5, två papper till uppgifterna 6-10 och ett papper per uppgift till uppgifterna 11-15 Skriv din tentamenskod på varje inlämnat extra papper. Den maximala poängen för respektive uppgift står angiven efter uppgiftens nummer. Totalt kan 40 poäng erhållas. För betyget 3 krävs ca 20, för betyget 4 ca 28 och för betyget 5 ca 34 poäng. Om inget speciellt anges gäller frågorna Borland C++. Detta häfte ska du behålla. Lycka till!

2(9) 1) (1p) I specifikationen för klassen GPS finns de privata medlemsvariablerna x, y, z definierade enligt: float x, y, z; // Koordinaterna x, y i planet och z i höjdled. Implementera konstruktorn nedan så att den kopierar parametervärdena till motsvarande medlemsvariabler. Specifikation av konstruktorn enligt: GPS( float x = 0.0, float y = 0.0, float z = 0.0); 2) (1p) Skriv de satser som skapar ett objekt av klassen GPS ovan, med x = 876.6, y = 345.7 och z = 12.3. 3) (1p) Antag att klassen GPS har en egen utmatningsoperator och inmatningsoperator definierade. Skriv ett huvudprogram som skapar två GPS-objekt och skriver ut dessa i omvänd ordning jämfört med inmatningen. 4) (1p) Utmatningsoperatorns specifikation ser ut som: friend ostream &operator<<(ostream &ut, GPS g); Varför markerar man operatorn som friend? 5) (1p) Implementera utmatningsoperatorn enligt uppgift 4 ovan. 6) (2p) Klassen FASTIGHET avbildar fastigheter enligt: // Specifikation av klassen FASTIGHET Fastighet.h class FASTIGHET char bet[20]; // Fastighetens beteckning ex. Ladan5 int tax; // Fastighetens taxeringsvärde i hela kr int pris // Fastighetens försäljningspris i hela kr FASTIGHET(char *bet =, int tax = 0, int pris = 0); void las(); // Läser fastighetens data med ledtexter void skriv(); // Skriver fastighetens data med ledtexter int get_tax(); // Returnerar taxeringsvärdet för fastigheten int get_pris(); // Returnerar fastighetens försäljningspris float get_tax_pris_proc(); // Returnerar tax/pris i procent ; Implementera medlemsfunktionen las. 7) (2p) Implementera medlemsfunktionen skriv i klassen FASTIGHET ovan, så att den skriver ut fastighetens data.

3(9) 8 (2p) Implementera medlemsfunktionen float get_tax_pris_proc(); // Returnerar tax/pris i procent. 9) (2p) Skriv ett huvudprogram som skapar och läser in data till två fastighetsobjekt av klassen FASTIGHET ovan och skriver ut dem i ordning efter förhållandet mellan taxeringsvärdet och försäljningspriset, med den som har det lägsta förhållandet först. 10)(2p)Istället för att ha en las-funktion i klassen FASTIGHET kan man ha en inmatningsoperator. Implementera inmatningsoperatorn. 11)(5p) Klassen PERSON avbildar personer enligt: // Specifikation av klassen PERSON Person.h class PERSON char persnr[12]; char namn[30]; PERSON(char *persnr =, char *namn = ); void las(); // Läser personens data med ledtexter void skriv(); // Skriver personens data med ledtexter ; En mäklare är en person som säljer fastigheter med provision // Specifikation av klassen MAKLARE Maklare.h #include Person.h class MAKLARE : public PERSON float prov; // Provision ex.3.5% av priset MAKLARE(char *namn =, char *persnr=, float prov = 0.0); void las(); // Läser data med ledtexter void skriv(); // Skriver data med ledtexter float get_prov(); // Returnerar mäklarens provision i procent ; Implementera alla medlemsfunktioner i klassen MAKLARE.

4(9) 12)(5p)Klassen FASTAFF avbildar fastighetsaffärer förmedlade av en mäklare. // Specifikation av klassen FASTAFF Fastaff.h #include Fastighet.h class FASTAFF FASTIGHET *fp; // Förmedlad fastighet MAKLARE *mp; // Mäklare FASTAFF(FASTIGHET *fp=null, MAKLARE *mp=null); void las(); // Läser data med ledtexter void skriv(); // Skriver data med ledtexter int get_prov_kr(); // Returnerar provision i kr ; Implementera alla medlemsfunktioner för klassen FASTAFF. 13)(5p)En mäklare har alla fjolårets fastighetsaffärer i en textfil, Fast2004.txt, med fastighetsbeteckning, taxeringsvärde och försäljningspris radvis enligt: Ladan5 1450000 1780000 Loftet3 1560000 1980000............... Skriv ett huvudprogram som läser hela filen Fast2003.txt och skriver ut mäklarens totala provision under detta år om den utgör 2.5 % av försäljningspriset 14)(5p) En mobiltelefon kan avbildas med data och operationer enligt nedanstående specifikation. Implementera alla medlemsfunktioner i klassen MOBIL //Specifikation av klassen MOBIL Mobil.h class MOBIL char *telnr; // Telefonnummer float total_samtalstid; // Total samtalstid i minuter float pris_min; // Samtalspris per minut MOBIL(char *telnr, float pris_min, float total_samtalstid); ~MOBIL(); char *get_telnr(); void set_total_samtalstid(int sekunder); float get_total_samtalstid(); float samtals_kostnad(int sekunder); ; OBS! Telefonnumret ska allokeras dynamiskt till samma som kommer in som parameter.

5(9) 15)(5p)Ett mobilsamtal kan avbildas som ett objekt av klassen MOBSAM enligt: class MOBSAM MOBIL *mp1, *mp2; MOBSAM(MOBIL *mp1, MOBIL *mp2); ; Implementera konstruktorn och skriv ett huvudprogram som skapar ett mobilsamtal där den första mobilen ringer upp den andra. Samtalet kommer alltså att debiteras den första mobilen. Programmet ska med hjälp av funktionen clock bestämma samtalstiden och skriva ut vad samtalet kostar. Anropa funktionen sleep(5000) för att simulera samtalet som tar 5 sekunder. Glöm inte att uppdatera mobilens totala samtalstid. Låt ditt huvudprogram skriva ut den totala samtalstiden. Hjälp! Funktionen clock returnerar antalet sekunder som gått sedan 1970. Man kan avläsa klockan då samtalet startar och slutar. Skillnaden mellan dessa tider är samtalstiden som fås i sekunder om man dividerar tiden med CLOCKS_PER_SEC, som är en systemberoende konstant.

6(9) Lösningar till tentamen i Objektorienterad Programmering 5p, 050122 1) GPS::GPS(int x, int y, int z) this->x = x; this->y = y; this->z = Z; 2) GPS g(876.6, 345.7, 12.3); 3) void main() GPS g1, g2; cin >> g1 >> g2; cout << g2 << endl << g1 << endl; 4) För att få direkt tillgång till privata medlemsdata för GPS-klassen. 5) ostream &operator<<(ostream &ut, GPS g) ut << x = << g.x << endl; ut << y = << g.y << endl; ut << z = << g.z << endl; return ut; 6) void FASTIGHET::las() cout << "Ge fastighetsbeteckning : "; cin.getline(bet, sizeof(bet)); cout << "Ge taxeringsvärde : "; cin >> tax; cout << Ge försäljningspris : ; cin >> pris; cin.ignore(); 7) void FASTIGHET::skriv() cout << "Fastighetens beteckning : << bet << endl; cout << "Taxeringsvärde : << tax << endl; cout << "Försäljningsvärde : << pris << endl; 8) float FASTIGHET::get_tax_pris_proc() return (float)tax / pris * 100; 9) void main() FASTIGHET f1, f2; f1.las(); f2.las(); if (f1.get_tax_pris() < f2.get_tax_pris())

7(9) f1.skriv(); f2.skriv(); else f2.skriv(); f1.skriv(); 10) istream &FASTIGHET::operator>>(istream &in, FASTIGHET &f) cout << Ge fastighetens beteckning : ; in >> f.bet; cout << Ge taxeringsvärde : ; in >> f.tax; cout << Ge försäljningspris : ; in >> f.pris; return in; 11) include Maklare.h MAKLARE::MAKLARE(char *persnr, char *namn, float prov) :PERSON(persnr, namn) this->prov = prov; void MAKLARE::skriv() PERSON::skriv(); cout << Provision : ; cout << prov << endl; void MAKLARE::las() PERSON::las(); cout << Ge provision : ; cin >> prov; void float get_prov() return prov; 12) #include Fastighet.h #include Maklare.h FASTAFF::FASTAFF(FASTIGHET *fp, MAKLARE *mp) this->fp = fp; this->mp = mp; void FASTAFF::las() fp->las(); mp->las();

8(9) void FASTAFF::skriv() fp->skriv(); mp->skriv(); int FASTAFF::get_prov_kr() return mp->get_prov() * fp->get_pris() / 100; 13) #include <conio.h> #include "Fastaff.h" #include <iostream> #include <fstream> using namespace std; void main() ifstream tsin("fast2003.txt"); char fastbet[20]; int fasttax, fastpris, sum = 0; MAKLARE m("340804-8765", "Adam Anersson", 2.5); while (tsin >> fastbet >> fasttax >> fastpris) FASTIGHET f(fastbet, fasttax, fastpris); FASTAFF a(&f, &m); sum += a.get_prov_kr();; cout << "Total provision 2003 i kr : " << sum << endl; getch(); 14) #include "Mobil.h" #include <cstring> MOBIL::MOBIL(char *telnr, float pris_min, float total_samtalstid) this->telnr = new char[strlen(telnr)+1]; strcpy(this->telnr, telnr); this->pris_min = pris_min; this->total_samtalstid = total_samtalstid; MOBIL::~MOBIL() delete [] telnr; char *MOBIL::get_telnr() return telnr; void MOBIL::set_total_samtalstid(int sekunder) total_samtalstid += sekunder/60.0;

9(9) float MOBIL::get_total_samtalstid() return total_samtalstid; float MOBIL::samtals_kostnad(int sekunder) return sekunder / 60.0 * pris_min; 15) #include <conio.h> #include <ctime> #include <Windows.h> #include <iostream> #include "Mobsam.h" using namespace std; void main() MOBIL m1("0701234567", 1.20, 34.5), m2("0702345678", 1.35, 45.6); MOBSAM ms (&m1, &m2); int start, slut, tid; start = clock(); Sleep(5000); slut = clock(); tid = (slut - start) / CLOCKS_PER_SEC; cout<<"samtalet kostar "<<m1.samtals_kostnad(tid)<<" kr"<< endl; m1.set_total_samtalstid(tid); cout<<"total samtalstid är "<<m1.get_total_samtalstid()<<" min"; getch();