LÖSNINGSFÖRSLAG TILL Tentamen i objektorienterad programmering i C++ I 2001-01-20



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

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

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

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

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

TDIU01 - Programmering i C++, grundkurs

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

Tentamen EDAF30 Programmering i C++

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

C++ Slumptalsfunktioner + switch-satsen

Tentamen ges för: Tentamensdatum: Tid:

Föreläsning 1: Momstabellen i C++

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

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,

TDIU01 - Datortenta (DAT2)

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

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

Introduktionslaboration

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 på nätet idag kl Omtentamen i Programmering C, 5p, A1, D1, E1, Fri, Pr1, Te/Ek1,

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

Introduktionslaboration

Pekare. Pekare. Varför använder vi pekare? Vad är en pekare? Pekare. Deklaration/initiering av pekare

TDIU01 - Programmering i C++, grundkurs

HI1024 Programmering, grundkurs TEN

Skriv i mån av plats dina lösningar direkt i tentamen. Skriv ditt kodnummer längst upp på varje blad.

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,

TDIU01 - Programmering i C++, grundkurs

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

TDIU01 - Programmering i C++, grundkurs

C++ - En introduktion

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

TDIU01 Programmering i C++

Tentamen EDAF30 Programmering i C++

TDIU01 - Programmering i C++, grundkurs

TDDC76 - Programmering och Datastrukturer

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen

Programmering i C++ EDA623 Typer. EDA623 (Föreläsning 4) HT / 33

PROGRAMMERING-Java TENTAMINA

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

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

Tentamen EDAF30 Programmering i C++

TDDC76 - Programmering och Datastrukturer

HI1024 Programmering, grundkurs TEN

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

1 Funktioner och procedurell abstraktion

Funktionens deklaration

Datorövningar. Grunderna i C/C++

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

Tentamen: Datordel Programmeringsteknik

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

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

DD2387 Programsystemkonstruktion med C++ Tentamen 2

TDIU01 - Programmering i C++, grundkurs

Tentamen i DD2387 Programsystemkonstruktion med C++

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

EDAf30: Programmering i C++, 7.5 hp. EDAf30: Programmering i C++, 7.5 hp Administration. EDAf30: Programmering i C++, 7.5 hp Obligatoriska moment

TDDC76 - Programmering och Datastrukturer

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

OBS! All teori i detta och följande dokument kompletteras med genomgångar på lektionerna. Så det är viktigt att närvara och göra egna anteckningar.

Övning från förra gången: readword

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

1 Objektorienterad programkonstruktion

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

PROGRAMMERING-JAVA TENTAMINA

BMI = (vikt i kg) / (längd i m) 2. Lösningsförslag

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

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

Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY

Instuderingsfrågor, del D

Enkla datatyper minne

HI1024 Programmering, grundkurs TEN

Tentamen *:58/ID100V Programmering i C Exempel 3

C++ - En introduktion

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

Uppgifter till praktiska tentan, del A. (7 / 27)

5 Arv och dynamisk bindning FIGUR

TDIU01 - Datortenta (DAT2)

TENTAMEN OOP

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011,

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN1 - Teoretisk tentamen Tid: Torsdagen den 20 oktober 2011,

C++ Lektion Tecken och teckenfält

a. Vilka av följande påståenden är riktiga? Observera att felaktigt valda påståenden ger poängavdrag. (4p)

Tentamen Grundläggande programmering

Tentamen Objektorienterad Programutveckling med C++

Innehåll. Resurshantering. Resource handles. Minnesallokering. Minnesallokering Exempel: allokering på stacken. 6. Resurshantering

Tentamen OOP

Lösningsförslag tentamen FYTA11 Java

Objektorienterad programmering Föreläsning 5

Detta dokument är ett exempel, cirka hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

Chapter 3: Using Classes and Objects

Institutionen för TENTAMEN CTH VT-15 Datavetenskap TDA540. Tentamen för TDA540 Objektorienterad programmering

1 Klasser och objektorientering Vad är objektorientering?

TENTAMEN OOP

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

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

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

2D1387, Programsystemkonstruktion med C++ Johnny Bigert, Kursens hemsida:

Innehåll. Pekare Exempel

Transkript:

LÖSNINGSFÖRSLAG TILL Tentamen i objektorienterad programmering i C++ I 2001-01-20 Betygsgränser: 3 16 poäng 4 23 poäng 5 30 poäng Maxpoäng: 36 poäng Hjälpmedel: inga Lycka till Per Ekeroot Uppgift 1 Kortfrågor a. Skriv en if-sats som på skärmen skriver ut strängen Talet är OK om ett heltal ligger i intervallet 20 25 (inklusive gränserna). if(20 <= talet && talet <=25) cout << "Talet är OK"; (2p) b. Beräkna följande uttryck enligt C++ prioriteringsregler: 2.1*5/2-(15+3)/(7+3-5%3) (1p) Svar: 3,25 c. Skriv om följande programavsnitt med while- istället för for-loopen. for(int i=3; i<=5; i++) cout << i << endl; int i=3; while(i<=5) cout << i << endl; i++; (1p) d. Deklarera en heltalsvariabel med namnet tal. Deklarera sedan en pekare till heltal med namnet talpek. Låt sedan talpek peka på minnesutrymmet där tal lagras. (2p) int tal; int *talpek; talpek = &tal; e. Utgå från följande kod fstream minfil; Skriv sedan koden som kopplar ihop filobjektet minfil med filen minadata.dat som ligger i aktuell katalog på hårdisken, och öppnar den för läsning. minadata.dat är en binärfil. (2p) minfil.open("minadata.dat", ios::in ios::binary);

Per Ekeroot 2 Uppgift 2 (4p) Skriv ett programavsnitt i vilket användaren matar in två strängar, förnamn och efternamn. De två första tecknen i varje sträng ska sedan bilda en signatur som skrivs ut på skärmen. Du behöver inte skapa en ny sträng för signaturen. Du får använda string-klassen eller tecken-vektorer för att hantera strängarna. /* // Alternativ med teckenvektor const SIZE =20; char firstname[size], lastname[size]; */ // //Alternativ med string-klassen string firstname, lastname; // Mata in förnamn och efternamn cout << "Förnamn : "; cin >> firstname; cout << "Efternamn: "; cin >> lastname; // Skriv signatur på skärmen cout << "Signatur= " << firstname[0]<<firstname[1]<<lastname[0]<<lastname[1];

Per Ekeroot 3 Uppgift 3 Skriv ett programavsnitt som utför växling av valuta. Man ska kunna växla från svenska kronor till dollar eller från dollar till svenska kronor (SEK). En växlingsavgift på 30 SEK tas ut vid valutaväxlingen. Kravspecifikation:?? Programutformning: 1. Låt användaren välja om växling ska göras från SEK till dollar eller tvärtom 2. Utför beräkningen av beloppet i den nya valuta. Glöm inte att dra ifrån växlingsavgiften. 3. Skriv ut det beräknade beloppet med lämplig ledtext.?? Valutakursen ska anges med en konstant. Antag att en dollar kostar 9,83 svenska kronor?? Utskrift av belopp ska göras med två decimaler const float dollartoskr = 9.83; const avgift = 30.0; // avgift = 30 Skr cout << "****** MONEY EXCHANGE ******" << endl << endl; cout << " 1. Svenska kronor till dollar" << endl; cout << " 2. Dollar till svenska kronor" << endl<<endl; char ch; float belopp; ch = cout << setiosflags(ios::fixed)<<setprecision(2); if (ch == '1') // Svenska kronor till dollar cout << "Ange belopp i SEK: "; cin >> belopp; cout << "Belopp i dollar : " << (belopp-avgift)/dollartoskr; else if( ch=='2') // Dollar till svenska kronor cout << "Ange belopp i dollar: "; cin >> belopp; cout << "Belopp i SEK : " << belopp*dollartoskr-avgift; else cout << "Otillåtet val!";

Per Ekeroot 4 Uppgift 4 Vad skrivs ut från följande program? Skriv på ett rutat papper, ett tecken i varje ruta. #include <iostream> #include <conio> #include <iomanip> using namespace std; int main() cout << "Programstart" << endl; const char ch = 'A'; // ASCII-värde = 65 const int tal = 100; const float nr = 5; int chvalue = int (ch); cout << "Tecknet " << ch << " = " << chvalue << endl; chvalue++; cout << "Tecknet " << char (chvalue) << " = " << chvalue ; for(int i=0; i<9; i++) gotoxy(i/3*3+1, i%3+4); cout << setw(3) << i; float diff = tal / 3 + nr / 2; cout << endl << "Differensen = " << diff << endl; int loopa; for(loopa=tal/2; loopa>tal/5; loopa=loopa/2) cout << loopa << endl; cout << loopa << endl; Lösning:

Per Ekeroot 5 Uppgift 5 Skriv ett programavsnitt som slumpar heltal i intervallet 1 1000 (inkl. gränserna) och sedan presenterar statistik över de slumpade talen. Kravspecifikation:?? Programutformning 1. Fråga användaren hur många tal som ska slumpas. 2. Skapa en vektor dynamiskt med plats för antalet tal enl. föregående fråga. 3. Anropa en funktion som slumpar tal till vektorn (se nedan). 4. Anropa en funktion som beräknar de slumpade talens medelvärde (se nedan). Funktionen ska returnera medelvärdet som skrivs ut från huvudprogrammet.?? Skriv en funktion som slumpar heltal till en vektor. Parametrar till funktionen ska vara vektorn med slumptal och antalet slumptal.?? Skriv en funktion som beräknar slumptalens medelvärde. Parametrar till funktionen ska vara vektorn med slumptal och antalet slumptal. Funktionen ska returnera talens medelvärde. //---------------------------------------------------------------------- // Funktionsprototyper void Slumptal(int *talvektor, int antal); float SlumpMedel(const int *talvektor, int antal); int main() randomize(); cout <<"Hur många tal vill du slumpa?" << endl; int antaltal; cin >> antaltal; int *slumpvektor = new int[antaltal]; Slumptal(slumpVektor,antalTal); cout << "De " << antaltal << " slumptalens" << endl; cout << "medelvärde = " << SlumpMedel(slumpVektor, antaltal) << endl; delete [] slumpvektor; // Funktionsdefinitioner void Slumptal(int *talvektor, int antal) for(int i=0; i<antal; i++) talvektor[i] = random(1000)+1; float SlumpMedel(const int *talvektor, int antal) int summa = 0; for(int i=0; i<antal; i++) summa += talvektor[i]; return float(summa)/antal;

MITTHÖGSKOLAN Tentamen objektorienterad programmering i C++ I ht-2000 Per Ekeroot 6 Uppgift 6 Skriv ett programavsnitt som beräknar tid uttryckt i timmar minuter och sekunder mellan två tidpunkter inom samma dygn. Kravspecifikation:?? Skapa en struktur som har timmar, minuter och sekunder som medlemsvariabler.?? Skriv en funktion som beräknar tidsskillnaden mellan två tidpunkter som ligger inom samma dygn. Indata: tid1 och tid2 uttryckta med strukturen enl. ovan. Utdata: tid2 tid1?? Programutformning: 1. Användaren matar i de två tidpunkterna (tim, min & sek). 2. Anropa funktionen som beräknar tidsskillnaden tid2 tid1. 3. Skriv resultatet på skärmen. Utskriften ska göras från huvudprogrammet.?? Skriv lämpliga ledtexter. // Strukturdefinition struct TTime int hour; int min; int sec; ; // Funktionsprototyp TTime TimeDiff(TTime t1, TTime t2); // Huvudprogram int main() TTime time1, time2; // Mata in tider cout << "Mata in tid 1 " << endl; cout << "Timme : "; cin >> time1.hour; cout << "Minut : "; cin >> time1.min; cout << "Sekund: "; cin >> time1.sec; cout << endl; cout << "Mata in tid 2 " << endl; cout << "Timme : "; cin >> time2.hour; cout << "Minut : "; cin >> time2.min; cout << "Sekund: "; cin >> time2.sec; // Beräkna difftid TTime td = TimeDiff(time1, time2);

Per Ekeroot 7 // Skriv resultatet på skärmen cout << endl; cout << "Från tid 1 till tid 2 är det " << td.hour << " timmar " << td.min << " minuter "<< td.sec << " sekunder"; // Funktionsdefinition TTime TimeDiff(TTime t1, TTime t2) // Räkna om tiderna till sekunder long time1 = t1.hour*3600 + t1.min*60 + t1.sec; long time2 = t2.hour*3600 + t2.min*60 + t2.sec; long time = time2 - time1; TTime temp; // Omvandla från sekunder till tim, min och sek temp.hour = time / 3600; temp.min = time % 3600 / 60; temp.sec = time %60; return temp;