Avrundning och manipulatorer

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

6 In- och utmatning, strömmar

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

C++ - En introduktion

Introduktion till streams

TDDC76 - Programmering och Datastrukturer

C++ - En introduktion

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

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

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

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

4. Standard-containers. Strömmar och filer

Arbetsblad 1:10. Avrundning. 1 a) 17,8 b) 156,3 c) 19,09 2 a) 30,49 b) 6,85 c) 49,64

Introduktionslaboration

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

Introduktionslaboration

Inledande programmering med C# (1DV402) 85/2=42. OBS! Heltal 1 (13)

TDIU01 - Datortenta (DAT2)

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

Tentamen i Datakunskap NT

( ostream ) << ( annan datatyp ) : ostream

C++ Lektion Tecken och teckenfält

Enkla datatyper minne

Funktionens deklaration

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

TDIU01 Programmering i C++

C++ Slumptalsfunktioner + switch-satsen

TDIU01 - Programmering i C++, grundkurs

Innehåll. 1 Algoritmer. 2 Strömmar och filer. 3 Iteratorer. 1 Söka, räkna. 2 Jämföra, genomlöpa. 3 Generera nya data. 4 Kopiera och flytta element

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

Kapitel 5. Strömmar. Utmatning

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

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

Arbetsblad 1:1. Tiondelar på tallinjen 0,1 0,5 0,9 0,2 0,8 0,3 0,8 1,1 1,5 1,6 2,1 2,4 1,1 1,4 2,6 3,2 3,8

Arbetsblad 1:1. Tiondelar på tallinjen 0,9 1,1 0,8. 6 Sätt ut pilar som pekar på talen: A = 0,3 B = 0,8 C = 1,4

Arbetsblad 1:1. Tiondelar på tallinjen. 6 Sätt ut pilar som pekar på talen: A = 0,3 B = 0,8 C = 1,4

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

Repetera snabbt vad du lärde dig förra veckan. Du är nu redo att kasta dig in i nästa fas, teorin om villkor.

TDIU01 - Programmering i C++, grundkurs

JAVAUTVECKLING LEKTION 7

Variabler använder man sig av för att under programkörningen spara data eller information i primärminnet. En variabel har typ, namn och värde.

Uppgift 1 ( Betyg 3 uppgift )

Föreläsning 8: Aritmetik I

Strängar. Elektronikcentrum i Svängsta AB

Objektorienterad programmering Föreläsning 11. Copyright Mahmud Al Hakim

Föreläsning 8: Aritmetik och stora heltal

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.

Uttryck, satser och strömhantering

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

TDIU01 - Datortenta (DAT2)

En villkorssats är den konstruktion som finns i C++ för att göra en selektion av två alternativa sekvenser. Formen för if satsen är

En kort text om programmering i C.

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

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

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

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

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

kl Tentaupplägg

TDIU01 - Programmering i C++, grundkurs

Diagnostiskt Prov. Antaganden Om förutsättningar saknas I en uppgift skall rimliga antaganden göras och nedtecknas.

EXTRA UPPGIFTER I C++ PROGRAMMERING-A

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

Föreläsning 13. In- och utmatning

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

Strömmar och strängar

Programmering i C, 7,5 hp

Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012

1 Funktioner och procedurell abstraktion

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

Objektorienterad Programmering (TDDC77)

TAIU07 Matematiska beräkningar med MATLAB för MI. Fredrik Berntsson, Linköpings Universitet. 15 januari 2016 Sida 1 / 26

Tentamen i Programmering grundkurs och Programmering C

Lektion 1 - Steg 1. Introduktion. Hello World

COBOL. från grunden. monitors. Peter Sterwe. training people

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

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

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

Tentamen i Programmering grundkurs och Programmering C

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

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

Variabler, värden och typer

Uppgift 1 ( Betyg 3 uppgift )

Variabler, värden och typer

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

Lathund. Pacific C för MS-DOS

Objektorienterad Programmering (TDDC77)

Tecken. char. char ch = A ; sizeof(char) = 1 byte (ej 16-bitars tecken som i Java) char namn[]= "Nils"; // längd = 5 bytes

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

TDDB28 OH Föreläsning: C++ 1

a) A = 3 B = 4 C = 9 D = b) A = 250 B = 500 C = a) Tvåhundrasjuttiotre b) Ettusenfemhundranittio

Snabbguide för användning av CASIO FX-82ES Plus/FX-85ES Plus

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

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

Bruksanvisning för Citizen CX-77

TDIU01 - Programmering i C++, grundkurs

Instuderingsfrågor till Steg 1

Datorlära 3 Octave Workspace ovh mijlö Skriva text på skärmen Värdesiffror Variabler och typer Strängar Makro Vektorer

KPP053, HT2016 MATLAB, Föreläsning 1. Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner

Textsträngar från/till skärm eller fil

Laboration 1. Utgåva 1 Gäller från

Transkript:

Avrundning och manipulatorer Intern avrundning Avrundning vid utskrift o o Med formatflaggor Med manipuilatorer Andra manipulatorer o Exempel 1

Intern avrundning Intern avrundning används t ex då en variabel behöver avrundas innan den användes vidare "Avrunda först inkomsten nedåt till närmaste 100-tal, beräkna sedan skatten" då man behöver avrunda till hela 10-tal, 100-tal, då man avrundar på speciellt sätt "Avrunda till närmaste 50-öring" Princip: I C++ : Avrunda 1.456 till n decimaler Flytta decimaltecknet n steg åt höger: 145.6 Avrunda till närmaste heltal: 146.6 Flytta tillbaka decimaltecknet n steg: 1.46 double tal = 1.456; n=2 här floor(x) ger det största heltal som är x x x -2-1 0 1 2 tal = floor(tal*100+0.5)/100; // Avrunda tal till 2 decimaler Flytta kommat två steg åt höger Avrunda till närmaste lägre heltal Flytta tillbaka kommat två steg åt vänster 2

Intern avrundning - exempel // Avrundning till 100-del (2 decimaler) double tal = floor(tal*100 + 0.5) / 100; // Avrundning till 10-del (1 decimal) double tal = floor(tal*10 + 0.5) / 10; // Avrundning till 2-del (50-öring) double kr = floor(kr*2 + 0.5) / 2; OBS viktigt med 10.0 om tal är ett heltal // Avrundning till heltal int heltal = floor(tal + 0.5); // Avrundning till 10-tal double tal = floor(tal/10.0 + 0.5)*10; Man ser ofta intern avrundning utföras med typning till int istället för floor()! OBS! Detta gäller endast för positiva tal! double tal = int(tal * 100 + 0.5) / 100.0; // Viktigt att dela med 100.0 för // att få decimaler 3

Avrundning vid utskrift - setf() Använd i första hand "avrundning vid utskrift" - till cout finns ett antal flaggor som bl a styr precision och decimaler - flaggorna kan påverkas direkt eller med manipulatorer. Avrundning till 2 decimaler med setf() (sätter värden på I/O-flaggorna) cout.setf(ios_base::fixed); cout.setf(ios_base::showpoint); cout.precision(2); // Vanliga decimaltal // Visa decimaler även om de är noll // Sätt två decimaler double pris = 125.5678; cout << pris << "kr" // Skriver ut pris med 2 decimaler, dvs 125.57kr Precisionen gäller tills den ändras Utelämnas cout.setf(ios_base::fixed)ger cout.precision(2) två värdesiffror i stället för 2 decimaler I tidigare versioner av C++ användes ios:: i stället för ios_base:: 4

Avrundning vid utskrift - Manipulatorer Stream a b c MANIPULATOR A B C Stream En stream är en följd av byte En manipulator kan infogas i en ström och påverkar denna på något sätt. Avrundning till 2 decimaler med manipulatorer #include <iomanip>... cout << fixed << showpoint << setprecision(2); //Sätter flaggor med manipulatorer double pris = 125.0; cout << pris << "kr" // Skriver ut pris med 2 decimaler, dvs 125.00kr Setprecision(2) gäller tills den ändras Utelämnas fixed ger setprecision(2) två värdesiffror i stället för 2 decimaler Ett alternativ till fixed är scientific som ger utskrift i 10-potensformat. T ex 125.5678 blir 0.13E02 med cout << scientific << setprecision(2); 5

Andra manipulatorer Som alternativ till flaggorna som används till att formatera in- och utströmmarna finns det manipulatorer - Här visas de vanligaste: Manipulator Egenskap endl Radframmatning och tömmer buffert ends Avslutar sträng flush Tömmer buffert dec / hex / oct In- och utmatning i dec/hex/oct setfill(char) Sätter utfyllnadstecken setprecision(int) Sätter decimaler för flyttal i fixed format setw(int) Sätter fältvidd fixed/scientific Sätter fasttalsformat/10-potensformat left / right Vänster / höger-justerad utskrift showpos / noshowpos Visa inledande + showbase/noshowbase Visa 0xnnnn el 0nnnn boolalpha / noboolalpha Visa true/false Alla manipulatorer utom setw() sätter det nya värdet permanent 6

#include <iostream.h> #include <iomanip.h> int main() { int tal; Manipulatorer - Exempel setfill är bra om du ska skriva ut ett datum, t ex 2005-04-02 (Använd setfill( 0 ) och setw(2)) cout << endl << "Ange ett hex-tal : "; cin >> hex >> tal; // Hexadecimal inmatning cout << setfill('0'); // Fyll ut med 0 cout << " Hex :" << hex << setw(3) << tal // Skriv högerjust. i kolumnvidd 3 << " Dec :" << dec << setw(4) << tal // - - - - 4 << " Okt :" << oct << setw(5) << tal // - - - - 5 << endl << endl; cout << setfill(' '); // Återställ till (standard-)utfyllnad return 0; } Körexempel Ange ett hex-tal : 20 Hex :020 Dec :0032 Okt :00040 setw() gäller bara en utskrift. Övriga formateringsmanipulatorer gäller tills de ändras. 7

Ex 1 Utskrift i kolumner med 2 och 4 decimaler på samma rad const double PI=4*atan(1); // Värdet på pi, dvs 3.14159 cout << fixed << showpoint << setfill('#') << setprecision(3) << setw(10) << PI << setprecision(4) << setw(8) << sqrt(2) << setfill(' ') << endl; Ex 2 Utskrift: Utskrift med decimaler i kolumner / tabeller #####3.142##1.4142 10 8 Utfyllt med # för att visa kolumner - normalt används blanktecken Utskrift med utfylld blandad justering (vä/hö) för tabeller cout << fixed << showpoint << setfill('#'); cout << right << setw(9) << setprecision(2) << tal1 << ' << left << setw(9) << namn << ' << right << setw(9) << setprecision(4) << tal2; cout <<setfill(' '); Koden körd tre gånger med olika värden på variablerna ###416.23 Svensson# #232.4500 #####6.50 Ekman#### ###3.4500 #12345.67 Testman## ##17.5670 Strängar vänsterjusteras Numeriska värden högerjusteras 8