de la tastatura |
din fisier |
#include<iostream.h> void main() { int x; cin>>x;citim un numar } |
#include<fstream.h> void main() { ifstream f(”numere.in”); int x; f>>x; citim un numar din fisier } |
Fisierele de iesire, cele in care se vor afisa rezultatele NU trebuie create de noi, le va crea programul.
SCRIEREA datelor
Pe ecran |
in fisier |
#include<iostream.h> void main() { int x; cin>>x; cout<<x; } |
#include<fstream.h> void main() { ifstream f(”numere.in”); ofstream g(”numere.out”); int x; f>>x; citim un numar din fisier g<<x;scriem in fisier } |
ATENTIE:
NU mai utilizati clrscr() si getch() cand lucrati cu fisiere!
Funcţii utile în prelucrarea fişierelor text
eof() – se utilizează pentru detectarea sfârşitului de fişier. Funcţia returnează 0 dacă valoarea curentă nu este sfârşitul de fişier şi 1 în caz contrar.
f.close() – se utilizează pentru închiderea fişierului
CITIREA datelor din fisier
este cunoscut numarul n al valorilor |
cand nu este cunoscut numarul valorilor din fisier |
Enunt: Se citesc n numere intregi , calculati suma lor si afisati aceasta suma in fisierul date.out. #include<fstream.h> void main() { ifstream f(”date.in”); ofstream g(”date.out”); int x,s=0,n; f>>n; for(i=1;i<=n;i++) { f>>x; s=s+x; } g<<s; f.close();g.close(); } |
Enunt: Se citesc toate numerele intregi din fisierul date.in, calculati suma lor si afisati aceasta suma in fisierul date.out. VARIANTA 1 #include<fstream.h> void main() { ifstream f(”date.in”); ofstream g(”date.out”); int x,s=0; while(f>>x) s=s+x; g<<s; f.close();g.close(); } VARIANTA 2 #include<fstream.h>void main() { ifstream f(”date.in”); ofstream g(”date.out”); int x,s=0; f>>x; while(!f.eof()) {s=s+x; f>>x;} g<<s; f.close();g.close(); } |
Enunt: Se citesc n numere intregi , calculati suma lor si afisati aceasta suma in fisierul date.out.
Enunt: Se citesc toate numerele intregi din fisierul date.in, calculati suma lor si afisati aceasta suma in fisierul date.out.
Aplicatii:
Problema: Buchete
(olimpiada locala de informatica 2003 – autor: Crstina Iordaiche)
La o florarie s-au primit n (n<=30000) fire de flori. Din fisierul buchete.in se citeste numarul n.
Florareasa doreste sa le aranjeze in vaze astfel incat:
- toate vazele sa contina acelasi numar de flori
- numarul florilor din vaza sa fie impar
Cerinta: Afisati in fisierul buchete.out, in cate moduri poate imparti florareasa cele n fire de flori.
Pentru fiecare caz afisati numarul de vaze necesare si cate flori va contine fiecare vaza.
Exemplu:
n=9
1 vaza a cate 9 flori
3 vaze a cate 3 flori
9 vaze cate 1 floare
———————-
Florile se pot imparti in 3 moduri:
Problema:Parola
(Concursul National de informatica SATU MARE 2009 – autor: Crstina Iordaiche)
La un joc computerizat trecerea de la un nivel la altul se face prin intermediul unei parole in functie de punctajul obtinut de jucator, la nivelul anterior. Parola este un numar de maxim 9 cifre, cel mai mare posibil care se obtine luand in considerare o singura data toate cifrele ce fac parte din punctajul realizat de jucator. Citindu-se din fisierul parola.in punctajul P obtinut de jucator, afisati in fisierul parola.out, parola ce trebuie tastata pentru trecerea la nivelul urmator.
Exemplu:
P= 41100 parola=410
Probleme pentru pregatire in vederea participarii la olimpiada:http://olimpiada.info/oji2007/index.php?cid=arhiva
http://campion.edu.ro/arhiva/index.php?page=problem&action=view&id=912
http://campion.edu.ro/arhiva/index.php?page=problem&action=view&id=413
http://campion.edu.ro/arhiva/index.php?page=problem&action=view&id=407