Bevezetés Kiíratás Beolvasás Formázás Fájlkezelés Gyakorló feladatok C++ I/O. Bevezetés. Izsó Tamás február 20. Izsó Tamás C++ I/O / 1

Hasonló dokumentumok
A C++ nyelvben a függvény nevek túlterhelésével biztonságosabbá tehetnénk az adatok kiírását és beolvasását.

Fejlett programozási nyelvek C++ Sablonok és adatfolyamok

Pénzügyi algoritmusok

Programozás II. 2. Dr. Iványi Péter

1. Alapok. Programozás II

1. Gyakorlat. Rövid elméleti összefoglaló. <tárolási osztály>típus <típus > változónév <= kezdőérték><, >;

C++ programozási nyelv Struktúrák a C++ nyelvben Gyakorlat

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós május 6. Széchenyi István Egyetem, Gy r

7. gyakorlat. Fájlkezelés IO haladó Függvények haladó

Programozás C nyelven (3. ELŐADÁS) Sapientia EMTE

Felhasználó által definiált adattípus

117. AA Megoldó Alfréd AA 117.

Programozási nyelvek I. 5. előadás (Gregorics Tibor anyagának felhasználásával)

Programozás C++ -ban 2007/1

Pénzügyi algoritmusok

1. Írjunk programot mely beolvas két egész számot és kinyomtatja az összegüket.

STL gyakorlat C++ Izsó Tamás május 9. Izsó Tamás STL gyakorlat/ 1

Stack Vezérlés szerkezet Adat 2.

Programozás C és C++ -ban

Alkalmazott modul: Programozás 2. előadás. Procedurális programozás: adatfolyamok, adatsorok kezelése

Bevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok

Maximum kiválasztás tömbben

Algoritmizálás + kódolás C++ nyelven és Pascalban

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

A C programozási nyelv I. Bevezetés

7. gyakorlat Sorozatok, Fájlkezelés

Algoritmizálás + kódolás C++ nyelven és Pascalban

Programozás C nyelven (13. ELŐADÁS) Sapientia EMTE

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Programozás 1. Dr. Iványi Péter

A C programozási nyelv I. Bevezetés

Informatika terméktervezőknek

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás

INFORMATIKA tétel 2018

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

500. AA Megoldó Alfréd AA 500.

Programozás alapjai II. (1. ea) C++

Programozás alapjai II. (1. ea) C++

Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás

Bevezetés a programozásba I.

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Dinamikus változók. Dinamikus változók. Dinamikus változók. Dinamikus változók. 7.

Bevezetés a C++ programozásba

Bevezetés a programozásba I 8. gyakorlat. C++: szövegfolyamok, intelligens tömbök

Mintavételes szabályozás mikrovezérlő segítségével

Programozás 6. Dr. Iványi Péter

Programozás C és C++ -ban

Programozás I gyakorlat

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

Bevezetés a programozásba I 8. gyakorlat. C++: szövegfolyamok, intelligens tömbök. Adatfolyamok Hibalehetőségek

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

Programozás I gyakorlat

Programozás alapjai 2. (2. ea) C++

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

osztályok kapcsolata Származtatatás C++ Izsó Tamás március 19. Izsó Tamás Származtatatás/ 1

Bevezetés a programozásba I.

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Programozás alapjai II. (2. ea) C++

Programozás alapjai II. (2. ea) C++

8. Gyakorlat. Rövid elméleti összefoglaló: Fájlkezelés

Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

Bevezetés a programozásba. 11. Előadás: Esettanulmány

Programozás alapjai C nyelv 10. gyakorlat. Standard függvények. Union

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1

0.1. Mi az a standard be- és kimenet? A két mintafeladat leírása

Bevezetés a programozásba. 8. Előadás: Függvények 2.

Programozási alapismeretek 2009/2010

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos

infix kifejezés a+b ab+ +ab postfix kifejezés prefix kifejezés a+b ab+ +ab a+b ab+ +ab Készítette: Szabóné Nacsa Rozália

INFORMATIKA tétel 2019

íő ö Ú ö ö ő í ű í ű í í ű ö í ö Ü ö

A feladat lényege egy felhasználói típusnak a zsák típusnak a megvalósítása.

ó Ó ó Ó Ő ó Ő Ó Í

Szoftvertervezés és -fejlesztés I.

É ö É ó Á É ó ü Á Ő Ö ü ö Ö ő ü ö ő Ü ű ő ó ő ó ő ő ő í ö ö ö í ő ü ü ő ü ü ő ö ó ő ő ú ő ő ö ö ő ő ő ú ő ő ü ú

Programozási nyelvek Java

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Előfeldolgozó rendszer Tömbök. Dr. Bécsi Tamás 4. Előadás

í ű í í í ű ö ü ü ö ú ű ú ö ö í í í ű ö ü ü ö ö ö ö í í í ű ö ü ü ö ü ö í í í ű í ö í ö ö ű í ü ü ö í ö ö ö ü í í ű í ú ö ö ö ü ö ö ú ö ö ö ü ö ö ö ö

ú ü ú ö ú í ü í ű ö ü ü ú ú ö ú ö íö í ú ü

Ú ú ö é ö é Ú ú ö ű ö ö ű ö é ö ö é í í Ö ö í í Á Á Ó é ű ü é é ü ú é ü é ű ü é

ó ú ó ó ó ó ó ó ó ó ó ó ü ó ü ö ü ó Á Á Ő ű ü ó ó ó Í ó ü ú ü Á Á ű ö ó ó ó ó ö ü

Kifejezések. Kozsik Tamás. December 11, 2016

Programozás II. 4. Dr. Iványi Péter

INFORMATIKA javítókulcs 2016

Programozás alapjai 2.Gy: A C nyelv alapjai P R O

Szerző. Varga Péter ETR azonosító: VAPQAAI.ELTE cím: Név: Kurzuskód:

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

S z á m í t ó g é p e s a l a p i s m e r e t e k

Alkalmazott modul: Programozás 2. előadás. Procedurális programozás: adatfolyamok, adatsorok kezelése. Adatfolyamok kezelése. Adatfolyamok kezelése

Bánsághi Anna 2014 Bánsághi Anna 1 of 35

Információs Technológia

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3

Elemi alkalmazások fejlesztése I. Olvassunk be egy fájlból egész számokat egy tömbbe. Keressük meg a tömb valamely

2018, Funkcionális programozás

Programozás alapjai II. (1. ea) C++

Gregorics Tibor Egyszerű programok C++ nyelvi elemei 1

Átírás:

C++ I/O Bevezetés Izsó Tamás 2014. február 20. Izsó Tamás C++ I/O / 1

Section 1 Bevezetés Izsó Tamás C++ I/O / 2

Irodalom Izsó Tamás C++ I/O / 3

Paraméter illesztés függvénynév túlterhelés esetén 1 Pontos típus illeszkedés. Nincs szükség konverzióra. 2 Egész kiterjesztés : bool > int, char > int, short > int, unsigned > int, float > double 3 Szabványos konverziók: double < > int, T > void, Derived > Base, int > unsigned int 4 Felhasználó által írt konverziók. 5 Változó függvény argumentum :... Mit ír ki C-ben és mit C++-ban? char ch ; p r i n t f ( "%d %d %d ", sizeof ( char ), sizeof ( ch ), sizeof ( x ) ) ; Izsó Tamás C++ I/O / 4

Motiváció #include < s t d i o. h> void foo ( ) i n t i =19, double p i =3.14; p r i n t f ( "%d \ n ", i ) ; / / OK p r i n t f ( "%d %d \ n ", i, 19, p i ) ; / / hibás formátum mező, / / vagy paraméter Izsó Tamás C++ I/O / 5

Függvénynév túlterhelés FILE w r i t e ( FILE f, const i n t i ) f p r i n t f ( f, "%d ", i ) ; return f ; FILE w r i t e ( FILE f, const double r ) f p r i n t f ( f, "%f ", r ) ; return f ; FILE w r i t e ( FILE f, const char s ) f p r i n t f ( f, "%s ", s ) ; return f ; Izsó Tamás C++ I/O / 6

Függvénynév túlterhelés void foo ( ) i n t i =4; double p i =3.14; w r i t e ( stdout, " 4 Pi= " ) ; w r i t e ( stdout, 4 p i ) ; w r i t e ( stdout, " \ n " ) ; Izsó Tamás C++ I/O / 7

Függvények láncolása void foo ( ) i n t i =4; double p i =3.14; w r i t e ( w r i t e ( w r i t e ( stdout, " 4 Pi= " ), 4 p i ) " \ n " ) ; Izsó Tamás C++ I/O / 8

Függvények láncolása infix operátor átdefiniálással FILE operator <<(FILE f, const i n t i ) f p r i n t f ( f, "%d ", i ) ; return f ; FILE operator < <( FILE f, const double r ) f p r i n t f ( f, "%f ", r ) ; return f ; FILE operator < <( FILE f, const char s ) f p r i n t f ( f, "%s ", s ) ; return f ; Izsó Tamás C++ I/O / 9

Operátorok láncolása void foo ( ) i n t i =4; double p i =3.14; operator <<( operator <<( operator <<( stdout, " 4 Pi= " ), 4 p i ), " \ n " ) ; Operátoros jelöléssel: void foo ( ) i n t i =4; double p i =3.14; s t d o ut << " 4 Pi= " << 4 p i << " \ n " ; Izsó Tamás C++ I/O / 10

<< és >> operátorok jelentése iostream esetén << Inserter (beszúrás) a kiírandó folyamba beszúrja a megjelenítendő adatokat. >> Extractor (kinyerés) a bejövő adatfolyamból kinyeri a soron következő adatot. Izsó Tamás C++ I/O / 11

Előre definiált stream-ek. cin standard input ( C megfelelője stdin ) cout standard output ( C megfelelője stdout ) cerr standard error ( C megfelelője stderr ) clog buffer-olt változata a standard errornak. Izsó Tamás C++ I/O / 12

Stream modell memória 61 6c 6d 61 00 7b 00 00 00 18 2d 44 54 fb 21 09 40 alma 123 3.14159265 ostream buffer istream buffer Izsó Tamás C++ I/O / 13

Section 2 Kiíratás Izsó Tamás C++ I/O / 14

Felhasználó által definiált inserter struct Komplex double r ; double i ; ; ostream& operator <<( ostream& o, const Komplex& p ) o << p. r << std : : showpos << p. i << std : : noshowpos << i ; return o ; void foo ( ) Komplex p1 = 2, 5 ; cout << p1 << endl ; / / 2+5 i Izsó Tamás C++ I/O / 15

Azonnali output megjelenítése cout << " Kérem az x é r t é k é t \ n " << f l u s h ; Ezzel ekvivalens: cout << " Kérem az x é r t é k é t " << endl ; Izsó Tamás C++ I/O / 16

Bináris kiíratás i n t c= A ; cout. put ( c ) ; / / egy k a r a k t e r t í r k i cout << ( char ) c ; / / egy k a r a k t e r t í r k i / / egész b i n á r i s k i í r a t á s a cout. w r i t e ( ( char )&c, sizeof ( c ) ) ; Izsó Tamás C++ I/O / 17

Tetszőleges adatok konvertálása karakterfüzérré # i n c l u d e <sstream > # i n c l u d e <iostream > using namespace std ; i n t main ( ) ostringstream os ; os << 123 << << 456 << ends ; cout << os. s t r ( ) << endl ; return 0; Izsó Tamás C++ I/O / 18

Keep it simple: as simple as possible, but no simpler." Albert Einstein Izsó Tamás C++ I/O / 19

Section 3 Beolvasás Izsó Tamás C++ I/O / 20

Adatfolyam állapot lekezelése i n t i ; i f ( c i n >> i ).... / / rendben v o l t a beolvasás else.... / / hibás i n p u t vagy f i l e vége bool good() A beolvasás sikeres volt. bool eof() Fájl vége volt. bool fail () Az utolsó beolvasás sikertelen volt, de adatvesztés nem lépett fel. bool bad() Javíthatatlan hiba. Ilyenkor a fail () függvény is jelez. Izsó Tamás C++ I/O / 21

Beolvasó ciklus szervezése const i n t MAXPAIR=10; Pair vp [MAXPAIR ] ; i n t x, y ; i n t n p a i r =0; while ( npair < MAXPAIR && cin >>x && c i n >>y ) vp [ n p a i r ]. x=x ; vp [ n p a i r + + ]. y=y ; Izsó Tamás C++ I/O / 22

Felhasználó által definiált extractor istream& operator >>( istream& i, Pair& p a i r ) i >> p a i r. x >> p a i r. y ; return i ; Izsó Tamás C++ I/O / 23

Saját hibaállapot állítás istream& operator >>( istream& i, Pair& p a i r ) i >> p a i r. x >> p a i r. y ; i f (! i ) return i ; / / hiba v o l t i f ( p a i r. x <0 p a i r. y<0 ) i. c l e a r ( i o s : : badbit i. r d s t a t e ( ) ) ; return i ; Izsó Tamás C++ I/O / 24

Előírt érték beolvasása # include <iostream > using namespace std ; i n t main ( ) cout << " Kerek 1 t o l 10 i g egy egesz szamot : \ n " ; i n t n = 0; while ( cin >>n ) / / read i f (1<=n && n<=10) break ; / / check range cout << " Bocs, de " << n << " nem [ 1 : 1 0 ] k o z o t t van ; probald meg u j r a \ n " ; cout << " Beolvasott e r t e k : " << n <<endl ; return 0; Izsó Tamás C++ I/O / 25

Bolondbiztos beolvasás #include <iostream > using namespace std ; i n t main ( ) cout << " Kerek 1 t o l 10 ig egy egesz szamot : \ n " ; i n t n = 0; while ( n==0) cin >>n ; i f ( c i n ) i f (1<=n && n<=10) break ; / / check range cout << " Bocs, de " << n << " nem [ 1 : 10] kozott van ; probald meg ujra \ n " ; n=0; else i f ( c i n. f a i l ( ) ) / / nem egész szám j ö t t cin. clear ( ) ; / / h i b a á l l a p o t t ö r l é s e cout << " Bocs de ez nem szam v o l t ; probald meg ujra \ n " ; char ch ; / / nem számjegyek átolvasása while ( cin >>ch &&! i s d i g i t ( ch ) ) ; i f (! c i n ) / / nem t a l á l t u n k számjegyet cerr << " feladtam " ; return 5; cin. unget ( ) ; / / számjegy v i s s z a t é t e l e else / / eof vagy rossz i n p u t cerr << " feladtam " ; return 5; ; cout << " Beolvasott ertek : " << n <<endl ; return 0; Izsó Tamás C++ I/O / 26

Mi rossz az előző programban? Összekeveredtek a feladatok, úgymint érték olvasása tevékenység kiírása hiba kiírás rossz input átolvasása input tesztelése Szét kell választani a különböző logikai részeket. Izsó Tamás C++ I/O / 27

Bolondbiztos beolvasás újra Logikailag különböző részek: int get_int ( int low, int high); int get_int (); void skip_to_int (); Izsó Tamás C++ I/O / 28

Hibás adatok átolvasása void s k i p _ t o _ i n t ( ) i f ( c i n. f a i l ( ) ) / / nem egész szám j ö t t c i n. c l e a r ( ) ; / / h i b a á l l a p o t t ö r l é s e char ch ; / / nem számjegyek átolvasása while ( cin >>ch ) i f ( i s d i g i t ( ch ) ) c i n. unget ( ) ; return ; ; throw " feladtam! " ; / / jobb h í j á n s t r i n g Izsó Tamás C++ I/O / 29

Egész érték beolvasás i n t g e t _ i n t ( ) i n t n = 0; while ( true ) i f ( cin >>n ) return n ; cout << " Bocs de ez nem szam v o l t. " ; cout << " Probald meg u j r a \ n " ; s k i p _ t o _ i n t ( ) ; return 0; / / ide nem j u t a vezérlés Izsó Tamás C++ I/O / 30

i n t m = g e t _ i n t ( 2, 3 0 0 ) ; cout << "m: " << m << endl Izsó Tamás ; C++ I/O / 31 Megadott intervallumba eső érték beolvasása i n t g e t _ i n t ( i n t low, i n t high ) cout << " Kerek " << low " t o l " << high << " i g egy egesz szamot : \ n " ; while ( true ) i n t n = g e t _ i n t ( ) ; i f ( low <=n && n<=high ) return n ; cout << " Bocs de a szam nem e s e t t az i n t e r v a l l u m b a. " ; cout << " Probald meg u j r a \ n " ; s k i p _ t o _ i n t ( ) ; return 0; / / ide nem j u t a vezérlés Használat: i n t n = g e t _ i n t ( 1, 1 0 ) ; cout << " n : " << n << endl ;

Section 4 Formázás Izsó Tamás C++ I/O / 32

Maximálisan megengedett karakterszám beállítása String char* beolvasása esetén vigyázni kell, nehogy több adatot olvassunk, mint amennyi memória rendelkezésre áll. void foo ( ) char p [ 5 ] ; c i n. width ( sizeof ( p ) ) ; c i n >> p ; másként: void foo ( ) char p [ 5 ] ; c i n >> setw ( sizeof ( p ) >> p ; Izsó Tamás C++ I/O / 33

Sor olvasás void foo ( ) char l i n e [ 1 0 0 ] ; c i n. g e t l i n e ( l i n e, sizeof ( l i n e ) ) ; Izsó Tamás C++ I/O / 34

Szóközök beolvasása void foo ( ) char c ; c i n >> noskipws ; while ( c i n >> c && c!= \ n ) cout <<c ; c i n >> skipws ; / / a getc ( ) minden k a r a k t e r t beolvas c i n. get ( c ) ;.... while ( c i n. get ( c ) )..... Izsó Tamás C++ I/O / 35

Bináris input void foo ( ) i n t v [ 1 0 0 ] ;.... c i n. read ( ( char ) v, sizeof ( v ) ) ; Izsó Tamás C++ I/O / 36

Karakterfüzér konvertálása tetszőleges adatra # i n c l u d e <sstream > void foo ( ) i n t iv1, i v 2 ; i s t r i n g s t r e a m i s ( " 123 456 " ) ; i s >> i v 1 >> i v 2 ; / / konvertálás Izsó Tamás C++ I/O / 37

Numerikus formátumok Integer érték 1234 (decimal) 2322 (octal) 4d2 (hexadecimal) Lebegőpontos szám 1234.57 (general) 1.2345678e+03 (scientific) 1234.567890 (fixed) Lebegőpontos szám pontossága 1234.57 (precision 6) 1234.6 (precision 5) Mezőszélesség 12 (alapértelmezés ) 12 (12 4 karakter szélesen) Izsó Tamás C++ I/O / 38

Mezőszélesség cout. width ( 5 ) ; cout << 12 << << 34 << << 56 << endl ; egyszerűbben: cout << setw ( 5 ) << 12 << << 34 << << 56 << endl ; Izsó Tamás C++ I/O / 39

Kitöltés és jobbra, balra igazítás cout. f i l l ( ) ; cout << l e f t << setw ( 5 ) << 13 << ", " ; cout << setw ( 5 ) << 25 << ", " ; cout. f i l l ( # ) ; cout << r i g h t << setw ( 5 ) << 14 << ", " << endl ; output: 13***,25***,###14, Izsó Tamás C++ I/O / 40

Számrendszer megadása i n t x =64; cout << dec << x << << hex << x << << oct << x << << endl ; cout << showbase << dec << x << << hex << x << << oct << x << << endl ; output : 64 40 100 64 0x40 0100 Izsó Tamás C++ I/O / 41

Lebegőpontos szám pontossága cout << 1234.56789 << \ t << f i x e d << 1234.56789 << \ t << s c i e n t i f i c << 1234.56789 << \ n ; cout << general << s e t p r e c i s i o n ( 5 ) << 1234.56789 << \ t << f i x e d << 1234.56789 << \ t << s c i e n t i f i c << 1234.56789 << \ n ; cout << general << s e t p r e c i s i o n ( 8 ) << 1234.56789 << \ t << f i x e d << 1234.56789 << \ t << s c i e n t i f i c << 1234.56789 << \ n ; output : 1234.57 1234.567890 1.234568e+03 1234.6 1234.56789 1.23457e+03 1234.5679 1234.56789000 1.23456789e+03 Izsó Tamás C++ I/O / 42

Manipulátorok összefoglalása 1 név jelentés boolalpha bool típus szövegesen (true, false) dec tízes számrendszer endl newline és flush ends null karakter fixed tizedes tört alak flush stream buffer kiürítés hex hexadecimális számrendszer left balra igazítás noboolalpha bool formátuma szám (0,1) noshowbase ne mutassa a számrendszer alakját noshowpoint ne írjon tizedesvesszőt (pontot) noshowpos ne írjon pozitív előjelet noskipws ne olvassa át a whitespace karaktereket nouppercase számoknál (E) és hexa értékeknél (A-F) ne írjon nagybetűt oct nyolcas számrendszer Izsó Tamás C++ I/O / 43

Manipulátorok összefoglalása 2 név resetiosflags right scientific setfill setiosflags setprecision setw showbase showpoint showpos skipws uppercase jelentés formátum flagek törlése jobbra igazít exponenciális alak kitöltő karakter beállítás beállítja a megadott jelzőbiteket kiírandó tizedesjegyek beállítása mezőszélesség mutassa a számrendszer alakját írjon tizedesvesszőt (pontot) írjon pozitív előjelet is whitespacek átolvasása számoknál (E) és hexa értékeknél (A-F) nagybetűt használjon Izsó Tamás C++ I/O / 44

Section 5 Fájlkezelés Izsó Tamás C++ I/O / 45

Fájlok megnyitása # i n c l u d e <iostream > # i n c l u d e <fstream > using namespace std ; i n t main ( ) fstream os ( " t e s t. t x t ", fstream : : i n fstream : : out ) ; i f ( os ) os << " PI : " << 3. 14 << endl ;..... os. close ( ) ; else c e r r < " Hiba a f á j l megnyitásakor " <<endl ; return 0; Izsó Tamás C++ I/O / 46

Megnyitási módok flag app (append) ate (at end) binary (binary) in (input) out (output) trunc (truncate) megnyitási mód minden egyes kiírás előtt a fájl végére pozícionál megnyitás után a fájl végére pozícionál bináris mód olvasás engedélyezése írás engedélyezése megnyitáskor a fájl tartalmának a törlése Izsó Tamás C++ I/O / 47

Section 6 Gyakorló feladatok Izsó Tamás C++ I/O / 48

Feladat 1. Írja át az alábbi C programrészletet C++-ban szokásos iostream felhasználásával! #include < s t d i o. h> i n t main ( ) # define LEN 20 char s t r [ LEN ] ; i n t i = 10; scanf ( "%19s ", s t r ) ; p r i n t f ( "%s \ n ", s t r ) ; f p r i n t f ( stdout, " Hello \ n " ) ; f p r i n t f ( s t d e r r, " Hello \ n " ) ; p r i n t f ( "%d \ n ", i ) ; p r i n t f ( "%04d \ n ", i ) ; p r i n t f ( "%+d \ n ", i ) ; p r i n t f ( "%x \ n ", i ) ; p r i n t f ( "%X \ n ", i ) ; p r i n t f ( "%02X \ n ", i ) ; p r i n t f ( "%o \ n ", i ) ; Izsó Tamás C++ I/O / 49

Feladat 2. Mit ír ki a program? #include <iostream > #include <fstream > using namespace std ; i n t main ( ) fstream f s ( " alma. t x t ", fstream : : out fstream : : t r u n c ) ; i n t i = 16; f s. width ( 4 ) ; f s << hex << i ; f s. width ( 8 ) ; f s << oct << i << \ n ; double p i = 3.14159; f s. f i l l (. ) ; f s. width ( 2 0 ) ; f s. p r e c i s i o n ( 4 ) ; f s << p i << \ n ; f s. close ( ) ; f s. open ( " alma. t x t ", fstream : : i n ) ; char buf [ 1 0 0 ] ; while ( f s. g e t l i n e ( buf, sizeof ( buf ) ) ) cout << buf << endl ; f s. close ( ) ; c i n. ignore ( 1 ) ; return 0; Izsó Tamás C++ I/O / 50