Académique Documents
Professionnel Documents
Culture Documents
1. Prezentare general
Exist cazuri cnd nu tim exact cte valori conine fiierul de intrare. Enunul problemei apare sub urmtoarea
form: Fiierul de intrare conine valori de tipul separate printr-un spaiu (sau fiecare valoare pe o
linie). Din enun nu rezult numrul de valori coninut de fiierul de intrare, ci doar faptul c aceste valori apar
n fiier. Desigur,acestea fiind date de intrare vor trebui citite i prelucrate. n cazul unui ir nedeterminat de
valori, problema este c nu tim cnd anume ne oprim din citit i prelucrat.
Va trebui s citim i s prelucrm tot din fiier. Vom folosi o funcie ataat variabilelor tip fiier de intrare,
funcia eof (End Of File = Sfarsit De Fisier) Aceast funcie verific dac mai exist valori pn la sfritul
fiierului.
nume_logic_fisier.eof() are valoarea 1 daca pana la sfarsitul fisierului nu mai exista nici o
valoare nume_logic_fisier.eof() are valoarea 0 daca pana la sfarsitul fisierului mai exista valori.
Forma general pentru a citi i prelucra valorile din fiier este urmtoarea:
Exemplu:
.................. ..................
ifstream f(....... ); ifstream in(....... );
//fisier de intrare cu nume logic f //fisier intrare cu nume logic in
.................. ..................
while (!f.eof() ) while (!in.eof() )
//cat timp nu e sfarsitul fisierului //cat timp nu e sfarsitul fisierului
{ {
f >>n;//citeste data din fisier in>>n;//citeste data din fisier
//prelucreaza data citita; //prelucreaza data citita;
} }
.................. ..................
2. Aplicaii
Fiierul numere.in conine un numr natural k, iar pe a doua linie o serie de valori naturale, separate printr-un
spaiu. S se determine i s se afieze n fiierul numere.out, cte numere de pe a doua linie a fiierului de
intrare sunt multiplu de k.
Exemplu:
numere.in numere.out Explicaie
7 5 Exist 5 numere (49, 91, 0, 70, 35) n fiierul de intrare
17 49 8 91 0 12 100 70 35 99 13 care sunt multiplu de 7.
1
Clasa a IX-a A, E
Rezolvare: Se citete k i apoi se citesc valorile de pe a doua linie. Cum nu tim cte valori exist va trebui s
folosim modalitatea de citire i prelucrare descris mai sus. O variabil nr va reine numrul de valori multiplu
de k. Prelucrarea va nsemna faptul c, dac o valoare citit este multiplu de k, atunci valoarea variabilei nr va
crete cu o unitate.
..................//biblioteci,namespace
int main()
{
f.close();g.close();//inchidere fisiere
return 0;
Fiierul divpr.in conine o serie de numere naturale separate printr-un spaiu. Pentru fiecare valoare din fiierul
de intrare, s se afieze n fiierul divpr.out numrul de divizori proprii. Valorile vor fi afiate pe un singur rnd,
desprite printr-un spaiu.
Exemplu:
divpr.in divpr.out
10 23 100 17 18 15 2 2060420
Rezolvare: nu cunoatem cte valori avem n fiierul de intrare. Prin urmare, va trebui s citim toate valorile
pn la sfritul fiierului i s prelucrm fiecare valoare citit. Prelucrarea nseamn pentru aceast problem
2
Clasa a IX-a A, E
determinarea numrului de divizori proprii pentru fiecare valoare citit. Adic, s aplicm un algoritm de
prelucrare a divizorilor. V mai amintii lecia? Vom genera toate valorile care pot fi divizori proprii ai unui
numr, i dintre aceste valori vom numra acele valori care efectiv sunt divizori.
..................//biblioteci,namespace
..................;//fisier de intrare
..................;//fisier de iesire
int main()
{
}//sfarsit for
}//sfarsit while
...............//inchidere fisiere
return 0;
Fiierul sumcif.in conine o serie de numere naturale separate printr-un spaiu. Pentru fiecare valoare din
fiierul de intrare, s se afieze n fiierul sumcif.out suma cifrelor. Valorile vor fi afiate pe un singur rnd,
desprite printr-un spaiu.
Exemplu:
sumcif.in sumcif.out
2552 131 79 7 989 232323 81100 14 5 16 7 26 15 10
Rezolvare: nu cunoatem cte valori avem n fiierul de intrare. Prin urmare, va trebui s citim toate valorile
pn la sfritul fiierului i s prelucrm fiecare valoare citit. Prelucrarea nseamn pentru aceast problem
determinarea sumei cifrelor pentru fiecare valoare citit. Adic, s aplicm un algoritm de prelucrare a cifrelor
3
Clasa a IX-a A, E
unui numr. V mai amintii lecia? Ct timp numrul are cifre, calculm ultima cifr, prelucrm
ultima cifr, i eliminm ultima cifr.
..................//biblioteci,namespace
..................;//fisier de intrare
..................;//fisier de iesire
int main()
{
}//sfarsit while
...............;//inchidere fisiere
return 0;