curs13-pc

61
 Programarea calculatoarelor Universitatea  Constatin Brâncuşi” T ârgu-Jiu Facultatea de Inginerie Departamentul de Automatic ă  , Energie şi Mediu Lect.dr. Adrian Runceanu  

Upload: geamanu-florin

Post on 14-Jan-2016

212 views

Category:

Documents


0 download

DESCRIPTION

curs13-PC

TRANSCRIPT

Page 1: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 1/61

Programareacalculatoarelor 

Universitatea “Constatin Brâncuşi” T ârgu-Jiu Facultatea de Inginerie

Departamentul de Automatic ă , Energie şi Mediu

Lect.dr. Adrian Runceanu 

Page 2: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 2/61

 

Curs 13

06.12.2011 Programarea calculatoarelor 2

Page 3: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 3/61

Capitolul 11. Fişiere

11.1. Declarare. Operaţii cu fişiere 

11.2. Prelucrarea fişierelor la nivel inferior11.3. Prelucrarea fişierelor la nivel superior

11.4. Probleme rezolvate

06.12.2011 Programarea calculatoarelor 3

Page 4: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 4/61

11.1. Declarare. Operaţii cu fişiere.

Fişierul  este o colecţie  de informaţii ordonată în înregistrări.

06.12.2011 Programarea calculatoarelor 4

Page 5: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 5/61

11.1. Declarare. Operaţii cu fişiere.

Fişierele pot fi de mai multe tipuri, în funcţie de datele ce se memorează în ele: 

1. fişier  text  conţine  doar caractere ASCII, iar

 înregistrările  sunt separate prin caracterelespeciale CR şi LF 

2. fişier standard ( fişierul header ) este un fişier text 

3. fişierul  binar  este un fişier  ce conţine  date înformat intern, iar  înregistrările  nu se maisepară prin caractere speciale

06.12.2011 Programarea calculatoarelor 5

Page 6: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 6/61

11.1. Declarare. Operaţii cu fişiere.

1. Operaţii cu fişiere 

Prezentăm în continuare operaţiile ce se

pot efectua cu fişiere în limbajul C: 

• deschiderea unui fişier  

• crearea unui fişier  

•actualizarea unui fişier  

• consultarea unui fişier  

06.12.2011 Programarea calculatoarelor 6

Page 7: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 7/61

11.1. Declarare. Operaţii cu fişiere.

•  poziţionarea pe o anumită înregistrare din

 fişier  

• ştergerea unui fişier  

• ştergerea de înregistrări din fişier  

• redenumirea unui fişier  

06.12.2011 Programarea calculatoarelor 7

Page 8: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 8/61

11.1. Declarare. Operaţii cu fişiere.

Se cunosc două  nivele de prelucrare afişierelor şi anume: 

1. Nivelul inferior de prelucrare  – se face apella funcţiile  sistemului de operare MS-DOS(încorporat în SO Windows). 

2. Nivelul superior de prelucrare  –  se folosescfuncţii specializate în lucrul cu fişierele. 

06.12.2011 Programarea calculatoarelor 8

Page 9: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 9/61

11.1. Declarare. Operaţii cu fişiere.

Observaţie: 

 În limbajul C++, nu există  instrucţiuni deintrare/ieşire  ci numai funcţii  specializatepentru aceste operaţii. (funcții care

prelucrează stream-uri)

06.12.2011 Programarea calculatoarelor 9

Page 10: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 10/61

Capitolul 11. Fişiere

11.1. Declarare. Operaţii cu fişiere

11.2. Prelucrarea fişierelor la nivel inferior11.3. Prelucrarea fişierelor la nivel superior

11.4. Probleme rezolvate

06.12.2011 Programarea calculatoarelor 10

Page 11: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 11/61

11.2. Prelucrarea fişierelor la nivel inferior 

Pentru a putea utiliza  prelucrarea

 fişierelor  la nivel inferior , trebuie să includem

 în program următoarele fişiere standard:<io.h>

<fcntl.h>

06.12.2011 Programarea calculatoarelor 11

Page 12: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 12/61

11.2. Prelucrarea fişierelor la nivel inferior 

a) Deschiderea unui fişier  seefectuează  pentru ca să  se asociezefişierului de pe suportul fizic, un număr 

 întreg numit descriptor de fişier = [df ].

06.12.2011 Programarea calculatoarelor 12

Page 13: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 13/61

11.2. Prelucrarea fişierelor la nivelinferior

Descriptorii pentru fişierele standard sunt: 

DENUMIREFISIER

SEMNIFICATIE VALOAREDESCRIPTOR

stdin tastatura 0

stdout monitor 1

stderr fişier de erori  2

s t d p r n i m p r i m a n t   ă   3

s t d a u x c o m u n i c a   ţ i e s e r i a l   ă   4

06.12.2011 Programarea calculatoarelor 13

Page 14: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 14/61

11.2. Prelucrarea fişierelor la nivel inferior 

Funcţia  utilizată  este open  şi  are următoarea sintaxă:

Unde:cale  –  este un pointer către  o zonă  de tip

caracter, zonă  în care este specificată calea deacces către fişierul ce trebuie deschis;

Dacă  descrierea completă  a căii  de acceslipseşte, atunci fişierul va fi căutat în directorulcurent.

06.12.2011 Programarea calculatoarelor 14

int open(const char *cale, int acces);

Page 15: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 15/61

11.2. Prelucrarea fişierelor la nivel inferior 

• acces  - este o constantă  predefinită  care poateavea următoarele valori:

Se pot face şi  combinaţii  între aceste valori:O_RDONLY | O_WRONLY, sau O_RDONLY |

O_BINARY.06.12.2011 Programarea calculatoarelor 15

valoare semnificatie 

O_RDONLY deschis doar pentru citireO_WRONLY deschis doar pentru scriereO_RDWR deschis pentru citire şi scriere O_APPEND deschis pentru adăugare la sfârşit O_TEXT deschidere fişier text 

O_BINARY deschiderea fişier binar 

Page 16: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 16/61

11.2. Prelucrarea fişierelor la nivel inferior 

Exemplu:Următoarea  secvenţă  de program se poate folosi pentru a

testa existenţa unui fişier cu numele “EXEMPLU.DAT”:int df;

if( (df =open(“C:\EXEMPLU.DAT”, O_RDONLY)) == -1 ){cout<<“Eroare la deschiderea fisierului”<<endl;exit(1);

}

Valoarea ce o returnează funcţia open() poate fi:> 0, dacă fişierul a fost găsit -1, dacă fişierul nu a fost găsit 

06.12.2011 Programarea calculatoarelor 16

Page 17: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 17/61

11.2. Prelucrarea fişierelor la nivel inferior 

b) Crearea unui fişier se efectuează cu ajutorul funcţiei

creat, care are următoarea sintaxă: 

Unde:

cale  – este un pointer către o zonă de tip caracter, zonă încare este specificată  calea de acces către  fişierul  ce

trebuie deschisDacă  descrierea completă  a căii  de acces lipseşte, 

atunci fişierul va fi căutat în directorul curent.

06.12.2011 Programarea calculatoarelor 17

int creat(const char *cale, int mod); 

Page 18: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 18/61

11.2. Prelucrarea fişierelor la nivel inferior 

• mod  – este modul de acces la fişierul respectiv:

valorile returnate de funcţia creat sunt:> 0  – dacă fişierul poate fi creat

-1, în caz contrar

06.12.2011 Programarea calculatoarelor 18

valoare semnificatie 

S_IREAD creat pentru citireS_IWRITE creat pentru scriereS_EXEC fişier executabi 

Page 19: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 19/61

11.2. Prelucrarea fişierelor la nivel inferior 

Exemplu:Următoarea secvenţă de program se poate folosi pentru

testa existenţa unui fişier cu numele “FISIER.DAT”: 

int df;if( (df=creat(“C:\FISIER.DAT”, S_WRITE)) == -1 ){

cout<<“Eroare la deschiderea (crearea)

fisierului\n”; exit(1);

}

06.12.2011 Programarea calculatoarelor 19

Page 20: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 20/61

11.2. Prelucrarea fişierelor la nivel inferior 

c) Citirea datelor dintr-un fişier se efectuează cuajutorul funcţiei  read, care are următoarea 

sintaxă:

Se citeşte  secvenţial  din fişierul  desemnatde descriptorul de fişier df  un număr de octeţi -lung care se depun la adresa desemnată de buf

06.12.2011 Programarea calculatoarelor 20

int read(int df, void *buf, int lung);

Page 21: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 21/61

Capitolul 11. Fişiere

11.1. Declarare. Operaţii cu fişiere

11.2. Prelucrarea fişierelor la nivel inferior11.3. Prelucrarea fişierelor la nivel superior

11.4. Probleme rezolvate

06.12.2011 Programarea calculatoarelor 21

Page 22: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 22/61

11.3. Prelucrarea fişierelor la nivel superior 

Pentru a putea utiliza prelucrarea fişierelor la nivel superior, trebuie să  includem în programurmătorul fişier standard: <stdio.h>.

a) Declararea unei variabile de tip fisier  seefectueaza astfel:

06.12.2011 Programarea calculatoarelor 22

FILE *pointer_fisier;

Page 23: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 23/61

11.3. Prelucrarea fişierelor la nivel superior 

b) Deschiderea unui fişier  se efectuează  cu ajutorul functiei fopen:

Unde:• nume este adresa unui sir de caractere care definestenumele fisierului care se deschide

• mod este adresa unui sir de caractere care defineste modulde prelucrare a fisierului dupa deschidere

Acest sir poate fi: – "r"  – deschidere pentru citire – "w"- deschidere pentru scriere – "a"- deschidere pentru scriere la sfarsitul fisierului

06.12.2011 Programarea calculatoarelor 23

FILE *fopen(const char *nume, const char *mod);

Page 24: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 24/61

11.3. Prelucrarea fişierelor la nivel superior 

Exemplu: Următoarea  secvenţă  de program se poatefolosi pentru testa existenţa  unui fişier  cu numele“EXEMPLU.DAT”:FILE *f;

if( ( f = fopen(“C:\EXEMPLU.DAT”, "r") ) == -1 ){cout<<“\nEroare la deschiderea fisierului”<<endl; exit(1);

}Valoarea ce o returnează funcţia fopen poate fi:

• adresa variabilei de tip fisier, dacă fişierul a fost găsit,

• sau -1, dacă fişierul nu a fost găsit. 06.12.2011 Programarea calculatoarelor 24

Page 25: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 25/61

11.3. Prelucrarea fişierelor la nivel superior 

Transferul unui caracter  in sau dintr-un fisier textse efectuează cu ajutorul funcţiilor  putc() si getc(), careau următoarele sintaxe:

• Functia  putc()  scrie caracterul cu codul ASCII c  infisierul asociat lui f   si returneaza valoarea lui c  sau

valoarea -1 in caz de eroare.• Functia getc() returneaza codul ASCII al caracterului

citit din fisierul asociat lui f .

06.12.2011 Programarea calculatoarelor 25

int putc(int c, FILE *f);int getc(FILE *f);

Page 26: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 26/61

11.3. Prelucrarea fişierelor la nivel superior 

• Transferul unui şir de caractere în sau dintr-un fişier text se realizează folosind funcţiile

 fgets() şi fputs() care au următoarele sintaxe:

06.12.2011 Programarea calculatoarelor 26

char fgets(char *s, int n, FILE *f);

int fputs(const char *s, FILE *f); 

Page 27: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 27/61

11.3. Prelucrarea fişierelor la nivel superior 

• Citiri/scrieri cu format  se realizează  cufuncţiile fscanf() şi fprintf() care permit citirea

respectiv scrierea în fişier şi care auurmătoarele sintaxe:

06.12.2011 Programarea calculatoarelor 27

int fscanf(FILE *f, const *format, . . .);

int fprintf(FILE *f, const *format, . . .); 

Page 28: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 28/61

11.3. Prelucrarea fişierelor la nivel superior 

•  Închiderea unui fişier se realizează cu ajutorulfuncţiei fclose() care are următoarea sintaxă:

06.12.2011 Programarea calculatoarelor 28

int fclose(FILE *f); 

Page 29: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 29/61

Capitolul 11. Fişiere

11.1. Declarare. Operaţii cu fişiere.

11.2. Prelucrarea fişierelor la nivel inferior11.3. Prelucrarea fişierelor la nivel superior

11.4. Probleme rezolvate

06.12.2011 Programarea calculatoarelor 29

Page 30: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 30/61

11.4. Probleme rezolvate

Problema 1:

Un program care citeşte un şir de numere

de la tastatură  şi  apoi scrie în fişierul "FISIER3.DAT", pe o linie, câte două  numereconsecutive, inserând între ele suma lor.

06.12.2011 Programarea calculatoarelor 30

Page 31: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 31/61

11.4. Probleme rezolvate

#include<stdio.h>

#include<stdlib.h>

#include<io.h>#include<iostream.h>

FILE *pf;

int i, n, x[30], nr;double a;

06.12.2011 Programarea calculatoarelor 31

Page 32: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 32/61

11.4. Probleme rezolvate

int main(){

cout<<"\ndati nr. de elemente : ";cin>>nr;

for(i = 1; i <= nr; i++){

cout<<"x["<<i<<"] = ";cin>>x[i];

}

06.12.2011 Programarea calculatoarelor 32

Page 33: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 33/61

11.4. Probleme rezolvate

pf = fopen("fisier3.dat","w");for(n=1 ; n<=nr; n++){

a = x[n] + x[n+1];fprintf(pf, "%d %4.2f %d\n", x[n], a, x[n+1]);

}

fclose(pf);}

06.12.2011 Programarea calculatoarelor 33

Page 34: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 34/61

06.12.2011 Programarea calculatoarelor 34

Page 35: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 35/61

11.4. Probleme rezolvate

Problema 2:

Se citeşte un şir de numere întregi din fişierul

“NUMERE.TXT”.Fişierul conţine:

 – pe primul rând numărul n de elemente ale şirului

 – apoi pe al doilea rând elementele şirului separateprin spaţii.

Să se afişeze elementele pare din şir.

06.12.2011 Programarea calculatoarelor 35

Page 36: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 36/61

11.4. Probleme rezolvate

Exemplu:

NUMERE.TXT

56 7 -2 4 11

Se vor afişa valorile: 6 -2 4

06.12.2011 Programarea calculatoarelor 36

Page 37: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 37/61

11.4. Probleme rezolvate

#include<stdio.h>

#include<iostream.h>

FILE *f;

int i, n, x;

int main()

{

f = fopen(“NUMERE.TXT”,”r”); fscanf(f, ”%d”, &n); 

06.12.2011 Programarea calculatoarelor 37

Page 38: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 38/61

11.4. Probleme rezolvate

for(i=1; i<=n; i++)

{

fscanf(f, “%d”, &x); 

if(x % 2 == 0)

cout<<x<<“ ”; 

}

fclose(f);}

06.12.2011 Programarea calculatoarelor 38

Page 39: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 39/61

06.12.2011 Programarea calculatoarelor 39

Page 40: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 40/61

11.4. Probleme rezolvate

Problema 3:

 În fişierul “SIR.TXT”  există  pe fiecare linie

câte un număr din şirul primelor n (n<300)numere naturale nenule.

Excepţie face un singur număr care a fost

omis.Să se determine care număr lipseşte.

06.12.2011 Programarea calculatoarelor 40

Page 41: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 41/61

11.4. Probleme rezolvate

Exemplu:

SIR.TXT

24

5

1

Se va afişa : 3

06.12.2011 Programarea calculatoarelor 41

Page 42: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 42/61

11.4. Probleme rezolvate

#include<stdio.h>

#include<iostream.h>

FILE *f;

int suma = 0, nr=0, x, numar;

int main()

{f = fopen(“SIR.TXT”,”r”); 

06.12.2011 Programarea calculatoarelor 42

Page 43: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 43/61

11.4. Probleme rezolvate

while( !feof(f) ){

fscanf(f, “%d\n”, &x); 

suma+=x;nr++;}fclose(f);numar=(nr+1)*(nr+2)/2 – suma;cout<<“Numarul lipsa este: ”<<numar; 

} 06.12.2011 Programarea calculatoarelor 43

Page 44: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 44/61

06.12.2011 Programarea calculatoarelor 44

Page 45: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 45/61

11.4. Probleme rezolvate

Problema 4:

Se citeşte un şir de numere întregi din fişierul

“NUMERE.TXT”.Fişierul conţine:

 – pe primul rând numărul n de elemente ale şirului

 –

apoi pe al doilea rând elementele şirului separateprin spaţii.

Să se afişeze primul şi ultimul număr din şir.

06.12.2011 Programarea calculatoarelor 45

Page 46: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 46/61

11.4. Probleme rezolvate

Exemplu:

NUMERE.TXT

7

-3 4 10 90 -9 11 15

Se vor afişa valorile: -3 15

06.12.2011 Programarea calculatoarelor 46

Page 47: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 47/61

11.4. Probleme rezolvate

#include<stdio.h>

#include<iostream.h>

FILE *f;

int i, n, x[100];int main()

{

f = fopen(“NUMERE.TXT”,”r”); fscanf(f, ”%d”, &n); 

06.12.2011 Programarea calculatoarelor 47

Page 48: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 48/61

11.4. Probleme rezolvate

for(i=1; i<=n; i++)

fscanf(f, “%d”, &x[i]); 

cout<<x[1]<<“ ”<<x[n]<<endl; 

fclose(f);

}

06.12.2011 Programarea calculatoarelor 48

Page 49: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 49/61

06.12.2011 Programarea calculatoarelor 49

Page 50: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 50/61

11.4. Probleme rezolvate

Problema 5:

Se citesc numere întregi din fişierul “MATRICE.TXT”.

Fişierul conţine: – pe primul rând numerele n şi m, n reprezentând câte linii se

află în fişier începând cu linia a doua, iar m reprezintă câtenumere întregi se află pe fiecare linie

 – apoi începând de pe al doilea rând elementele unei matrice

separate prin câte un spaţiu.Să se afişeze cea mai mică şi cea mai mare valoare

din matricea citită.

06.12.2011 Programarea calculatoarelor 50

Page 51: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 51/61

11.4. Probleme rezolvate

Exemplu:

MATRICE.TXT

3 311 -3 6

0 8 -14

8 15 2

Se vor afişa valorile: -14 si 15

06.12.2011 Programarea calculatoarelor 51

Page 52: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 52/61

11.4. Probleme rezolvate

#include<stdio.h>

#include<iostream.h>

FILE *f;

int i, j, n, m, a[10][10], min, max;int main()

{

f = fopen(“MATRICE.TXT”,”r”); fscanf(f, ”%d %d”, &n, &m); 

06.12.2011 Programarea calculatoarelor 52

Page 53: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 53/61

11.4. Probleme rezolvate

for(i=1; i<=n; i++)

for(j=1; j<=m; j++)fscanf(f, “%d”, &a[i][j]); 

fclose(f);

06.12.2011 Programarea calculatoarelor 53

Page 54: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 54/61

11.4. Probleme rezolvate

min=a[1][1];max=a[1][1];

for(i=1; i<=n; i++)

for(j=1; j<=m; j++){

if(a[i][j] < min) min = a[i][j];if(a[i][j] > max) max = a[i][j];

}cout<<min<<“ ”<<max; 

06.12.2011 Programarea calculatoarelor 54

Page 55: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 55/61

06.12.2011 Programarea calculatoarelor 55

Page 56: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 56/61

11.4. Probleme rezolvate

Problema 6:

Se citeşte un şir de numere întregi din fişierul

“NUMERE.TXT”.Fişierul conţine:

 – pe primul rând numărul n de elemente ale şirului

 – apoi pe fiecare din următoarele n rânduri câte unelement al şirului.

Să se afişeze suma elementelor pozitive din şir.

06.12.2011 Programarea calculatoarelor 56

Page 57: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 57/61

11.4. Probleme rezolvate

Exemplu:

NUMERE.TXT

5

67

-2

4

-10

Se va afişa valoarea: 22

06.12.2011 Programarea calculatoarelor 57

Page 58: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 58/61

11.4. Probleme rezolvate

#include<stdio.h>

#include<iostream.h>

FILE *f;

int i, n, x[100], suma=0;int main()

{

f = fopen(“NUMERE.TXT”,”r”); fscanf(f, ”%d”, &n); 

06.12.2011 Programarea calculatoarelor 58

Page 59: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 59/61

11.4. Probleme rezolvate

for(i=1; i<=n; i++){

fscanf(f, “%d\n”, &x[i]); if(x[i] > 0)

suma+=x[i];}fclose(f);

cout<<suma<<endl;}

06.12.2011 Programarea calculatoarelor 59

Page 60: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 60/61

06.12.2011 Programarea calculatoarelor 60

Page 61: curs13-PC

7/18/2019 curs13-PC

http://slidepdf.com/reader/full/curs13-pc 61/61

 

 Întrebări?