Löneförhöjning Denna laborationsuppgift är en introduktion och avser att visa hur du skapar enkla program med programspråket C++.

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

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

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Avrundning och manipulatorer

Introduktionslaboration

TDIU01 - Programmering i C++, grundkurs

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

Introduktionslaboration

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

C++ - En introduktion

Lektion 1 - Steg 1. Introduktion. Hello World

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

Programmeringsteknik med C och Matlab

Objektorienterad programmering Föreläsning 2

TDIU01 - Programmering i C++, grundkurs

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

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.

Obligatorisk uppgift: Numerisk kalkylator

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

Funktionens deklaration

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

TDDC76 - Programmering och Datastrukturer

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

Instuderingsfrågor till Steg 1

TDIU01 - Programmering i C++, grundkurs

Enkla datatyper minne

Övningsuppgifter till föreläsning 2 Variabler och uttryck

1 Funktioner och procedurell abstraktion

C++ Slumptalsfunktioner + switch-satsen

C++ - En introduktion

Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

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

Styrteknik: Binära tal, talsystem och koder D3:1

TDDC77 Objektorienterad Programmering

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Iteration while-satsen

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

HI1024 Programmering, grundkurs TEN

Uttryck, satser och strömhantering

Outline. For. I istället för att följa det normala ordningen, man ändra den. I i Java får man inte göra hopp hur som helst

Statistik över heltal

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

Språket Python - Del 1 Grundkurs i programmering med Python

Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

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

Programsystemkonstruktion med C++: Övning 1. Karl Palmskog september 2010

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Objektorienterad Programmering (TDDC77)

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Föreläsning 3. Iteration. while-satsen for-satsen do-satsen

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

Chapter 3: Using Classes and Objects

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.

PROGRAMMERING-JAVA TENTAMINA

Variabler och konstanter

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Föreläsning 3. Iteration while-satsen

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

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

Att skriva till och läsa från terminalfönstret

C++ Lektion Tecken och teckenfält

PROGRAMMERING-Java Omtentamina

Programmeringsteknik med C och Matlab

JAVAUTVECKLING LEKTION 3

HI1024 Programmering, grundkurs TEN

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

Kompilera och exekvera Javakod

Värmedistribution i plåt

TDIU01 - Programmering i C++, grundkurs

HI1024 Programmering, grundkurs TEN

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

DD2387 Programsystemkonstruktion med C++ Tentamen 2

Tentamen ges för: Tentamensdatum: Tid:

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

En kort text om programmering i C.

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då

PROGRAMMERING-Java TENTAMINA

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

1/15/2013. DD1310/DD1314/DA3009 Programmeringsteknik. Lärandemål... Vilka läser kursen? ...fler lärandemål VARFÖR? Föreläsning 1

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

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

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

EXTRA UPPGIFTER I C++ PROGRAMMERING-A

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera

Tema: Pythagoras sats. Linnéa Utterström & Malin Öberg

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Kursmaterial för laborationer i

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

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

DD1310/DD1314/DA3009 Programmeringsteknik LÄRANDEMÅL... Vilka läser kursen? ...FLER LÄRANDEMÅL. Föreläsning 1

Laboration 1. Objektorienterad programmering, Z1. Syfte

Transkript:

DV4 0 0-0-6 Löneförhöjning Denna laborationsuppgift är en introduktion och avser att visa hur du skapar enkla program med programspråket C++. Anställda vid ett företag har fått en löneförhöjning på,6 % retroaktivt för de senaste 6 månaderna. Skriv ett program som efterfrågar en anställds månadslön och som beräknar och skriver ut den retroaktiva lönen och den nya månadslönen. Använd en konstant för att lagra den procentuella löneökningen. Om en anställd tjänar 600 kr i månaden blir den retroaktiva lönen för de senaste 6 månaderna 68 kr och den nya månadslönen 4 4 kr. Ingen redovisning krävs av denna laborationsuppgift.,, 0 poäng (5)

DV4 0 0-0-6 Lösning Analys Ny månadslön och retroaktiv lön för de senaste 6 månaderna ska beräknas. Löneökningen på,6% behöver inte användaren mata in, utan lagras lämpligen i form av en konstant. För att kunna beräkna den nya månadslönen måste först den gamla månadslönen läsas in. Den nya månadslönen beräknas med: Gamla månadslönen * ( + LÖNEÖKNING). Den retroaktiva lönen beräknas med: Gamla månadslönen * 6 * LÖNEÖKNING. Flödesschema Strukturdiagram (Jackson) SALARYPROGRAM Start SALARY CALCULATION* Until answer!= 'Y' or answer!= 'y' PAY_RAISE 0,06 Read monthlywage INPUT CALCULATION OUTPUT newmonthlywage monthlywage * ( + PAY_RAISE) 9 4 5 6 7 8 retrowage monthlywage * 6 * PAY_RAISE Print newmonthlywage Print retrowage Operation list. Define constant PAY_RAISE. Print Header. Read monthlywage (int) 4. newmonthlywage = monthlywage * ( + PAY_RAISE) (int) 5. retrowage monthlywage * 6 * PAY_RAISE (int) 6. Print monthlywage & retrowage 7. Print one more time (question) 8. Read answer 9. Clear screen One more time? No Yes End,, 0 poäng (5)

DV4 0 0-0-6 Källkod // File: PayIncrease.cpp // Summary: This program calculates the new salary and // retroactive pay following a raise. // Version:. // Owner: Tommy Löfqvist // ------------------------------------------- // Log: 005-0-0 Created the file. Mats // 009-08-4 Modified by Tommy Löfqvist. // Removal of unnecessary code. Added iteration of the calculations. // 0-0- Revised by Anne. Converted to English and VS 0 // Preprocessor directives #include <iostream> #include <iomanip> using namespace std; // Constants const double PERCENT =.6; const double FACTOR = PERCENT/00; int main() { // Define and initialize variables int monthlywage = 0; int newmonthlywage = 0; int retroactivewage = 0; char answer; do { endl // Load the monthly salary from the user system("cls"); // Clear the screen cout << "PAY RAISE\n"; cout << "==============\n\n"; cout << "Input monthly wage : "; cin >> monthlywage; cin.ignore(80,'\n'); // Skip any possible debris and line endings // Calculate new monthly salary and retroactive pay newmonthlywage = int(monthlywage * ( + FACTOR) + 0.5); retroactivewage = int(monthlywage * FACTOR * 6 + 0.5); // Display results cout << "===========================" << endl; cout << "New monthly wage : " << setw(6) << newmonthlywage << " kr" << << "Retroactive wage : " << setw(6) << retroactivewage << " kr" << endl; cout << "\n\nnew calculation (Y/N)?"; cin >> answer; }while (answer == 'Y' answer == 'y'); } return 0;,, 0 poäng (5)

DV4 0 0-0-6 Vad kan du lära av detta program? Ett program består alltid av en eller flera funktioner. I detta fall heter funktionen main. Ett program ska alltid ha en funktion som heter main. Det är alltid i main som exekveringen av ett program startar. Du kan se det som att exekveringssystemet anropar main. int main() betyder att main ska returnera ett heltalsvärde (int); värdet 0 betyder att allt gått väl. Ett värde mellan och 55 används som felkod som kan avläsas av operativsystemet som startat programmet. Inkluderingen av iostream ger tillgång till objekten cin och cout som används till att läsa in resp. skriva ut data på skärmen. Alla namn i standardbiblioteket är kapslade i en namnrymd som heter std. En namnrymd är ett slags modul, eller paket, som innesluter de deklarationer som ingår i namnrymden så att de inte är direkt synliga. Ett sätt att göra namnen i en namnrymd synliga i ett program är att öppna namnrymden med using namespace. endl tillhör strömbiblioteket och är en s.k. manipulator. Den har den manipulativa effekten att sätta in ett nyradstecken (\n) i strömmen, d.v.s. ger en radbrytning i terminalfönstret. cout är kopplad till bildskärmen. Infogningsoperatorn << används ihop med cout för att foga in data till utströmmen. Lägg märke till riktningen på pilen som pekar mot den associerade skärmen. T ex cout << "New monthly wage : " << setw(6) << newmonthlywage << " kr" << endl cin är kopplad till tangenbordet och används till att läsa in data till variabler. Extraktionsoperatorn >> pekar här på den variabel som ska ta emot data. T ex cin >> answer; Observera att till skillnad från motsvarande funktioner i C så "vet" både cout och cin hur de ska hantera olika datatyper. Vid inläsning av numeriska värden. hoppas först ev. inledande vita tecken (blanka, tab-tecken, radslut, etc) över.. sedan läses talet och lagrar detta i variabeln. Efteröljande tecken som inte är siffror eller siffror som inte får plats, lämnas kvar i strömmen.. När du är klar med numerisk inmatning ska du tömma inströmmen så att det inte ligger kvar något, om du i nästa operation skulle läsa in en sträng (t ex ett namn). Tömningen kan göras med cin.ignore(80,'\n'); som raderar upp till 80 tecken eller tills radslut påträffas i inströmmen. // skapar en enskild rad-kommentar, där all text på resten av raden utgör kommentaren. Denna är endast till för den mänskliga läsaren av programkoden. Identifierare ska ges tydliga och beskrivande namn. I början får du gärna använda svenska namn, om det underlättar för nybörjare. Inledande { och avslutande } klammerparenteser ska stå på enskilda rader och under varandra på samma nivå. Indentera, dvs. skjut in, programkoden ett tab-tecken eller två mellanslag efter en inledande klammerparentes ( { ).,, 0 poäng 4 (5)

DV4 0 0-0-6 Konstanter, som PERCENT och FACTOR, ska skrivas genomgående med stora bokstäver (versaler). Variabler och funktionsnamn skrivs lämpligen med s.k. Camel-notation, d.v.s. alla ord sätts samman till en enda identifierare, med små bokstäver på alla utom första bokstaven i varje ord, t.ex. monthlywage Vid beräkning av newmonthlywage och retroactivewage adderas 0,5 till respektive lön för att få en avrundning till närmaste heltal. Dvs: newmonthlywage = monthlywage * ( + FACTOR) + 0.5; Utan additionen med 0.5 skulle högerledet, som är ett flyttal, trunkeras nedåt till närmaste heltal. 0.5 gör att tal som slutar på xxxx.5 eller högre kommer att höjas uppåt till närmast högre heltal före trunkeringen. T ex 5.67 kommer att bli 46.7 efter addition med 0.5 och efter trunkering får vi heltalet 4 som är korrekt avrundat. (Trunkering = alla decimaler slängs utan någon avrundning) Koden i main är strukturerad i kommenterade avsnitt avskiljda med tomma rader. Detta ökar läsbarheten, genom att vi enkelt kan urskilja de olika delmomenten. Vi får också hjälp att lägga koden i logisk ordning. Använd dock aldrig mer än en tomrad! Programmet repeteras med hjälp av en do - while sats som repeterar programkoden till vi svarar något annat är j eller J.,, 0 poäng 5 (5)

DV4 0 0-0-6 Fyra nummer Denna laborationsuppgift är en introduktion och avser att visa hur du skapar enkla program med programspråket C++. Skriv ett program som kan läsa in fyra heltal. Programmet ska beräkna summan, medelvärdet och produkten av de fyra heltalen. Programmet ska skriva ut alla tal som matats in samt svaren från beräkningarna. Programmet ska kunna köras valfritt antal gånger med nya värden utan omstart. Utskriften kan se ut som följer: STATISTICS ========== Enter four integers: 0 6 Entered numbers: 0 6 Sum Avarage Product --- ------- ------- 7.75 60 One more time? (Y/N)? Se körexempel ovan! Ett sätt att skapa kolumner är att använda manipulatorn setw. Ingen redovisning krävs av denna laborationsuppgift.,, 0 poäng (4)

DV4 0 0-0-6 Lösning Analys Fyra heltal ska läsas in. Varje heltal sparas i variabler av typen int. Summan fås genom att addera heltalen och lagra summan. Medelvärdet fås genom att dividera summan med fyra (se upp för heltalsdivision!). Produkten fås genom att multiplicera heltalen med varandra (var uppmärksam på s.k. overflow, d.v.s. då ett talområde överskrids). Flödesschema Start Läs in nr,, nr4 Strukturdiagram Statistik-program STATISTIK * Så länge svar är J eller svar är j sum nr + + nr4 average sum / 4 Inmatning Beräkning Utskrift product nr * * nr4 Skriv ut nr,, nr4 Skriv ut sum, average, product En gång till? J N Stopp Operationslista. Sudda skärm. Skriv rubrik. Läs in nr,, nr4 (int) 4. Beräkna sum = nr + + nr4 (int) 5. Beräkna average = sum / 4.0 (double) 6. Beräkna product = nr * *nr4 (double) 7. Skriv ut nr,, nr4 8. Skriv ut sum, average och product 9. Skriv ut En gång till 0. Läs in svar 4 5 6 7 8 9 0 Programmet är en iteration (*) av STATISTIK tills svar inte är 'J' eller 'j'. STATISTIK består av INMATNING, BERÄKNING och UTSKRIFT som utförs i sekvens. Inmatning består av operationerna, och. i (ordning) Beräkning består av operationerna 4, 5 och 6 Utskrift består av 7, 8, 9 och 0.,, 0 poäng (4)

DV4 0 0-0-6 Källkod // File: FourNumbers.cpp // Summary: This program calculates the sum, average and product of // four integers // Version:. // Owner: Tommy Löfqvist //----------------------------------------------- // Log: // 005-0-0 Created the file. Mats // 009-08-5 Modified by Tommy Löfqvist. Added iteration of program. // 0-0-7 Revised by Anne. Converted to English and VS 0 // Preprocessor directives #include <iostream> //cin cout endl #include <iomanip> //setw fixed setprecision using namespace std; //Prototypes void statistics(); int main() { char answer; do { statistics(); cout << "One more time (Y/N)?"; cin >> answer; } while (answer =='Y' answer == 'y'); } return 0; void statistics() { // Define and initialize variables int nr, nr, nr, nr4; int sum = 0; double average = 0; // Average value may contain decimals => double double product = 0; // The product may be large => double // Read the values from user system("cls"); // Clear screen cout << "STATISTICS" << endl; cout << "==========" << endl << endl; cout << "Input four integers: "; cin >> nr >> nr >> nr >> nr4; // Calculate sum, average and product sum = nr + nr + nr + nr4; average = sum / 4.0; // NOTE! 4.0 to avoid integer division product = nr * nr * nr * nr4;,, 0 poäng (4)

DV4 0 0-0-6 // Display results cout << fixed << showpoint; // Decimal form, display trailing zeroes cout << endl << "Entered integers " << setw(8) << nr << setw(8) << nr << setw(8) << nr << setw(8) << nr4 << endl << endl; cout << setw(8) << "Sum" << setw() << "Average" << setw() << "Product\n" << setw(8) << "---" << setw() << "-------" << setw() << "------- \n" << setw(8) << sum << setw()<< setprecision() << average << setw()<< setprecision(0) << product << endl << endl; } Vad är nytt i detta program *? system("cls") anropar Windows på kommandonivå. CLS suddar skärmen. I andra OS kanske detta inte fungerar. Inläsning av flera värden kan ske med en sats, cin >> nr >> nr >>. Då medelvärdet beräknas måste resultatet kunna bli ett flyttal. Genom att nämnaren skrivs som 4.0, och inte 4, kommer en flyttalsdivision att utföras. Hade det bara stått 4 hade det blivit en heltalsdivision. Manipulatorn setw används för att åstadkomma kolumner. För att kunna använda setw måste iomanip inkluderas. För att skapa radbryningar har escape-sekvensen \n använts (det hade gått lika bra med manipulatorn endl). et har lagts i en egen funktion, void statistics(), som anropas och repeteras i huvudprogrammet. * Jämfört med, laborationsuppgift, Löneökning.,, 0 poäng 4 (4)

DV4 4 0-0-6 Hitta och rätta syntaxfelen Använd din C++-kompilator för att hitta och rätta felen i följande program: //----------------------------------------------------------------------- // Object: This program has some syntax errors. Use the compiler to find // and correct them. Document your changes with comments or in log. //----------------------------------------------------------------------- // File: CompileError.cpp // Summary: This program calculates the weekly pay, given hours per week // and wages per hour. // Version:. // Owner: Tommy Löfqvist //--------------------------------------------------------------------- // Log: 005-0-09 Created the file, Mats! // 009-08-4 Revised by Tommy.Using manipulators to format output // instead of IO-flags. Inserted "wait for return code" at the end. // 0-0-: Revised by Anne. Converted to English version and VS0 //----------------------------------------------------------------------- #include <iostream> // Preprocessor directives #include <iomanip> using namespace std; void main() { // Define and initialize variables int hoursperweek = 5; double hourlywages = 8; // Calculate weekly salary weeklywages = hoursperweek * hourlywages; // Display results cout << fixed // Floating point format << setprecision() // decimals << showpoint; // Show trailing zero es cout << " Given an hourly wage of " << hourlywages << " kr" << endl << " and the number of hours per week " << hoursperweek << endl << "the weekly wages will be: " << weeklywages << " kr" << endl cout << "\npress return!"; cin.get(); // Wait for return OBLIGATORISK } return 0; Du kompilerar och länkar från kommandoprompten (i Windows) med: cl -c -EHsc compileerror.cpp sedan link LogicalError.obj OBS! Växlarna -c och -EHsc är känsliga för stora och små bokstäver. en ska redovisas enligt: Ett fungerande program som går att kompilera Visa tydligt i programkoden vad du ändrat, lämpligen med en kommentar.,, poäng OBLIGATORISK ()

DV4 4 0-0-6 Lk/No Hitta och rätta det logiska felet Använd din C++-kompilator, länkare och exekvera koden nedan för att hitta och rätta de logiska felen i programmet: //----------------------------------------------------------------------- // Object: This program has logical errors. Find and correct them. // There are miscalculations and the program can't be stopped with 'N'. // Document your changes with comments or in log. //----------------------------------------------------------------------- // File: LogicalError.cpp // Summary: Reads price and number of articles from user. Calculates and prints // number, tax rate and price with tax rate (swedish "moms"). // Version:. // Owner: Tommy Löfqvist //----------------------------------------------------------------------- // Log: 005-0-09 Created the file, Mats! // 009-08-4 Revised by Tommy. Swedish variable names and output text. // Number of items is now included. // Code for the problem is placed in a separate function // that is iterated in the main function. // 0-0- Revised by Anne. Converted to English version and VS 0 //----------------------------------------------------------------------- // Preprocessor directives #include <iostream> #include <iomanip> using namespace std; // Prototypes void pricecalculation(); int main() { char answer; do { pricecalculation(); cout << "One more time? (Y/N): "; cin >> answer; }while (answer = 'Y' answer == 'y'); OBLIGATORISK } return 0; //----------------------------------------------------------------- // void pricecalculation() // // Summary: Reads price and number of articles from user. Calculates and prints // quantity, vat and price with vat // Returns: - //----------------------------------------------------------------- void pricecalculation() { // Define and initialize constants and variables const int RATE = 5; // tax rate in percent double price = 0; int nrofarticles = 0; // price per piece // number of articles, 4, poäng OBLIGATORISK ()

DV4 4 0-0-6 Lk/No double ratesek = 0; double totalprice = 0; // tax rate in SEK // price incl. tax rate // Read price and number of articles cout << "Enter the price excl. the tax rate (swedish moms): "; cin >> price; cout << "Enter the number of articles: "; cin >> nrofarticles; // Calculate total price and tax rate ratesek = totalprice * RATE; totalprice = nrofarticles * price *( + RATE); // Display result with decimals cout << fixed << showpoint << setprecision(); } cout << nrofarticles << " number of articles cost " << totalprice << " kr. " << endl << "Of this " << ratesek << " kr is the tax rate." << endl; Du kompilerar från kommandoprompten med: cl -c -EHsc LogicalError.cpp OBS! Växlarna -c och -EHsc är känsliga för stora och små bokstäver. Du länkar från kommandoprompten med: link LogicalError.obj en ska redovisas enligt: Ett fungerande program som uppfyller ställda kriterier. Visa tydligt i programkoden vad du ändrat, lämpligen med en kommentar., 4, poäng OBLIGATORISK ()

DV4 5 009-08-5 Lk/Lö Temperatur Ibland händer det att temperaturer anges i Fahrenheit. Men hur många celsiusgrader är exempelvis 8,7 F? Skriv ett program som omvandlar en temperatur angiven i Fahrenheit till Celsius. Programmet ska be användaren ange temperaturen i F, som sedan omvandlas till C och skrivs ut med en decimals noggrannhet. Programmet ska kunna upprepa beräkningar utan omstart. F = 0 C och F = 00 C På Internet hittar du säkert information om hur omvandlingen går till, om du nu inte redan känner till den. Se demo-uppgifterna, och 4 för tips om hur upprepningen kan gå till. en ska redovisas enligt: Ett fungerande program som uppfyller ställda kriterier. Programkod, som är välskriven och lättläst, enligt den kodstandard som tillämpas under kursen. Var särskilt uppmärksam på att följa riktlinjer för kodkonventioner, enligt vad som anges på kurshemsidans "Konventioner för kod" (finns på menylänken under "Examination")!, 5, poäng ()

DV4 6 0-08- Elförbrukning En vän till dig har kommit fram till att en större kontroll över elkostnaderna skulle vara bra. Genom att läsa av elförbrukningen varje månadsskifte ska det vara möjligt att beräkna hur mycket el som förbrukats under månaden, samt kostnaden för den. Din vän har tecknat ett avtal där elpriset (inkl. el-certifikat, skatt och moms) är 94,9 öre/kwh och där den fasta kostnaden är 0 kr/år. Skriv ett program som hjälper din vän att hålla bättre kontroll på sin månatliga elförbrukning samt kostnaden för den. Du känner din vän väl och vet att programmet måste vara lätt att använda. Därför kommer du kommer fram till att det nog är lämpligt att programmet ber vännen att ange föregående månads avlästa värde samt aktuell månads avlästa värde. Programmet beräknar sedan elförbrukningen och kostnaden för att därefter skriva ut dem. Programmet ska repeteras, så att man inte behöver starta om på nytt för ny beräkning. Testa applikation för att kontrollera att den utför beräkningarna korrekt. Om föregående månads avläsning var 000 kwh och aktuell månadsavläsning är 6 000 kwh uppgår förbrukningen till 4 000 kwh och totalkostnaden till 8,87 kr. Deklarera den fasta kostnaden och elpriset som konstanter i kronor. Se uppgift, och 4 hur repetition av koden kan göras. en ska redovisas enligt: Ett fungerande program som uppfyller ställda kriterier. Programkod, som är välskriven och lättläst, enligt den kodstandard som tillämpas under kursen. Var särskilt uppmärksam på att följa riktlinjer för kodkonventioner, enligt vad som anges på kurshemsidans "Konventioner för kod" (finns på menylänken under "Examination")!, 6, poäng ()

DV4 7 00-0-0 Restid Många moderna bilar kan idag rapportera vilken medelhastighet bilen framförts med. Med hjälp av medelhastigheten och sträckan som återstår att köra kan den återstående restiden beräknas. Skriv ett program som beräknar den återstående restiden. Den återstående restiden ska presenteras i timmar och minuter. Användaren av programmet ska ange återstående körsträcka i mil och medelhastighet i km/h. Antag att samma medelhastighet kan hållas under den återstående körsträckan. Flera beräkningar ska kunna göras utan att starta om programmet. Om medelhastigheten är 8 km/h och återstående körsträcka är mil, blir restiden timme och 4 minuter. Beräkna restiden i minuter som ett flyttal som du sedan avrundar till ett heltal. Använd sedan heltalsdivision för att få antal timmar, samt modulo-operatorn för minuterna. Se uppgift, och 4 hur en repetition av programmet kan göras. en ska redovisas enligt: Ett fungerande program som uppfyller ställda kriterier. Programkod, som är välskriven och lättläst, enligt den kodstandard som tillämpas under kursen. Var särskilt uppmärksam på att följa riktlinjer för kodkonventioner, enligt vad som anges på kurshemsidans "Konventioner för kod" (finns på menylänken under "Examination")!, 7, poäng ()

DV4 8 0-08- Lk/Lö Växelpengar Då du handlar i en affär och betalar kontant får du kanske tillbaka växel. I regel får affärsbiträdet hjälp av kassaapparaten för att beräkna summan du ska få tillbaka. Vilka sedlar och mynt ska lämnas tillbaka får affärsbiträdet själv räkna ut i huvudet. Kan ett program göra samma sak? Skriv ett program som beräknar den växel du får tillbaka i samband med ett köp. Indata till programmet ska vara summan av det kunden ska betala i kr och öre samt hur mycket kunden lämnar till kassörskan (hela kronor). Programmet ska sedan, förutom att presentera beloppet kunden får tillbaka avrundat till närmsta krona, även visa antalet sedlar och mynt som kunden ska få tillbaka med så få sedlar och mynt som möjligt. Programmet ska kunna ge växel tillbaka med sedlar av valörerna 000, 500, 00, 50 och 0 samt mynten 0, 5 och kr. Du kan anta att det alltid finns tillräckligt antal av de sedlar och mynt som krävs. Programmet ska upprepas så att flera beräkningar kan göras utan omstart. Om priset är 7,58 kr och kunden betalar med en 000-lapp ska kunden få 68 kr tillbaka fördelat på en 500-lapp, en 00-lapp, en 0-lapp, en 5 krona och enkronor. Låt beloppet som ska betalas tillbaka vara i ören eller antal 50-öringar. Använd sedan / (heltalsdivision) för att beräkna antalet av visst valutaslag och % (modulo) för att beräkna det som blir kvar. (Se analogt exempel från föreläsning på uppdelning av en tid i sekunder i timmar, minuter och sekunder). Lägg gärna koden för en uppdelning i en egen void - funktion som repeteras i huvudprogrammet. För exempel på detta se demo uppgift. För avrundning till närmaste heltal se Avrundning och manipulatorer i högerspalten till. en ska redovisas enligt: Ett fungerande program som uppfyller ställda kriterier. Programkod, som är välskriven och lättläst, enligt den kodstandard som tillämpas under kursen. Var särskilt uppmärksam på att följa riktlinjer för kodkonventioner, enligt vad som anges på kurshemsidans Konventioner för kod (finns på menylänken under Examination)!, 8, poäng ()

DV4 9 009-08-7 Lö Effektökning Kalle har köpt en förstärkare med 00W uteffekt och är inte sen med att skryta med detta när han snackar med sina kompisar som bara har 0W förstärkare. Kalle tror nog att det låter 5 gånger så högt med sin förstärkare, men där har han fel. Nu är örats känslighet logaritmiskt så det krävs det en effektökning med db (decibel) för att man ska märka att det låter högre. En effektökning från P0 till P uttryckt i db kan räknas ut med formeln: P db 0log. P0 Skriv ett program som läser in kompisens effekt, Kalles effekt och beräknar hur många db mer Kalle har än kompisen. Eftersom det krävs minst db ökning av effekten för att man nätt och jämt kan höra skillnaden så beräknar du också hur många db ökningar som man erhåller med den höga effekten. Programmet ska kunna göra flera beräkningar utan omstart. Om Kalle har 40W och kompisen 0W ger detta en ökning med db som knappt kan höras (dvs. vi har ökat en db nivå). Körexempel EFFEKTBERAKNINGAR ================= Ange referenseffekt: 0 Ange effekt : 40 ============================= En forandring fran 0.0 till 40.0 motsvarar.0 db Dvs. st. db intervall En gang till? (J/N): _ Logaritmen log beräknas i C++ med funktionen log0(x) där x är det tal som man ska beräkna logaritmen för. Se uppgifterna, och 4 för hur repetitionen av programmet kan göras. en ska redovisas enligt: Ett fungerande program som uppfyller ställda kriterier. Programkod, som är välskriven och lättläst, enligt den kodstandard som tillämpas under kursen. Var särskilt uppmärksam på att följa riktlinjer för kodkonventioner, enligt vad som anges på kurshemsidans Konventioner för kod (finns på menylänken under Examination)!, 9, poäng ()

DV4 0 009-08-7 Lk/Lö Triangel Skriv ett program som beräknar hypotenusan för en rätvinklig triangel. Programmet ska be användaren ange de två kateterna, beräkna och skriva ut hypotenusan. Flera beräkningar ska kunna göras utan att starta om programmet. Om kateterna är och längdenheter blir hypotenusan,4 längdenheter. Med hjälp av biblioteksfunktionen sqrt() kan kvadratroten beräknas. Se uppgift, och 4 för hur repetition av beräkningen kan göras. en ska redovisas enligt: Ett fungerande program som uppfyller ställda kriterier. Programkod, som är välskriven och lättläst, enligt den kodstandard som tillämpas under kursen. Var särskilt uppmärksam på att följa riktlinjer för kodkonventioner, enligt vad som anges på kurshemsidans Konventioner för kod (finns på menylänken under Examination)!, 0, poäng ()

DV4 009-08-7 Lk/Lö Summan av -siffrigt tal Skriv ett program där användaren ombeds mata in ett tresiffrigt heltal (i en heltalsvariabel). Programmet ska sedan beräkna och skriva ut summan av de tre siffrorna heltalet utgörs av. Programmet ska kunna göra flera beräkningar utan att starta om programmet. Matar användaren in heltalet ska programmet beräkna att ++ är 6. Använd heltalsdivision och modulo-operatorn för att dela upp talet i siffror. Entalssiffran fås t.ex. med: talet % 0. Se uppgift, och 4 för tips om ett sätt att upprepa programmet. en ska redovisas enligt: Ett fungerande program som uppfyller ställda kriterier. Programkod, som är välskriven och lättläst, enligt den kodstandard som tillämpas under kursen. Var särskilt uppmärksam på att följa riktlinjer för kodkonventioner, enligt vad som anges på kurshemsidans Konventioner för kod (finns på menylänken under Examination)!,, poäng ()

DV4 009-08-7 Lk/Lö Vindavkylning, effektiv temperatur Du upplever säkert en lägre temperatur, än vad termometern visar, då det blåser. Men vilken temperatur är det du upplever? Hur mycket påverkar vindavkylningen temperaturen som termomentern visar? Vilken är den effektiva temperaturen? SMHI använder Osczevskis och Bluesteins formel (fr.o.m. vintern 00/004) för att beräkna den effektiva temperaturen. Skriv ett program där användaren genom att ange temperatur och vindhastighet kan få reda på den effektiva temperaturen, avrundad till närmsta heltal. Programmet ska klara flera beräkningar utan omstart. Kontrollera att ditt program ger samma resultat som du kan återfinna i tabellen i samma dokument du hittade formeln i. 4 C och 0 m/s ger upplevd temperatur - C. -6 C och 0 m/s ger upplevd temperatur -5 C Fungerar inte länken till SMHI, kan du använda en lokal kopia av dokumentet. Se uppgift, och 4 för tips om hur du kan repetera programmet. en ska redovisas enligt: Ett fungerande program som uppfyller ställda kriterier. Programkod, som är välskriven och lättläst, enligt den kodstandard som tillämpas under kursen. Var särskilt uppmärksam på att följa riktlinjer för kodkonventioner, enligt vad som anges på kurshemsidans Konventioner för kod (finns på menylänken under Examination)!,, poäng ()

DV4 009-08-7 Lk/Lö Aktieinvestering Adam investerade för drygt fyra år sedan en summa pengar i aktier. Adam vill inte avslöja för dig hur stor summa han investerat. Inte vill han heller avslöja hur det gått för aktierna (den procentuella ökningen/minskningen) under vart och ett av de fyra åren. Han vill däremot att du skriver ett program så att han kan ta reda på hur det gått med investeringen. Han ska kunna mata in den investerade summan, samt den procentuella förändringen för vart och ett av de fyra åren. Antag att summan av ökningen/minskningen återinvesteras varje år. Flera beräkningar ska kunna göras utan omstart av programmet. Om 0 000 kr investeras och värdeförändringen var,5%, 4,7%, -,% och 0,4% ska programmet skriva ut 0 65, kr. Efter ett år och procenttalet p ökar kapitalet med faktorn (+p/00). Se uppgift, och 4 för tips om hur du kan repetera programmet. en ska redovisas enligt: Ett fungerande program som uppfyller ställda kriterier. Programkod, som är välskriven och lättläst, enligt den kodstandard som tillämpas under kursen. Var särskilt uppmärksam på att följa riktlinjer för kodkonventioner, enligt vad som anges på kurshemsidans Konventioner för kod (finns på menylänken under Examination)!,, poäng ()

DV4 4 009-08-7 NA/Lö Ränteberäkning Skriv ett program som beräknar ränta på ränta för ett belopp som sätts in på banken och sparas i 0 år, till (exempelvis) % ränta. Om den årliga räntan är r procent och startbeloppet b sätts in på banken, kan det förräntade kapitalet efter n år på banken beräknas med formeln: b * ( + r/00) n. Ditt program ska vara uppdelat i flera funktioner (en för inläsning av data, en för beräkning och en för presentation av beräknat värde). Indata till programmet ska vara önskat startbelopp och antalet år. Utdata ska vara det beräknade slutbeloppet. Beloppsutskriften ska vara formaterad med decimaler, samt högerjusterad i tecken med inledande (valfritt) utfyllnadstecken. Flera beräkningar ska kunna göras utan omstart av programmet. Om startbeloppet är 000 kr, ska slutbeloppet bli enligt körexempel: Körexempel RANTA PA RANTA ============== Ange startkapital: 000 Ange antal ar : 0 Kapitalet blir med % ranta efter 0 ar: 4.9 kr En gang till (J/N)? För att enkelt kunna ändra villkoren för olika testkörningar av programmet, bör du deklarera räntesatsen som konstant. Värdet av uttrycket x y beräknas i C++ med biblioteksfunktionen pow(x, y), där x är den bas man vill beräkna en viss potens y av (d.v.s. x upphöjt till y ). Se uppgift och 4 för tips om hur programmet kan upprepas och användning av flera funktioner. Globala variabler får användas här! en ska redovisas enligt: Ett fungerande program som uppfyller ställda kriterier. Programkod, som är välskriven och lättläst, enligt den kodstandard som tillämpas under kursen. Var särskilt uppmärksam på att följa riktlinjer för kodkonventioner, enligt vad som anges på kurshemsidans Konventioner för kod (finns på menylänken under Examination)!, 4, poäng ()