Sunteți pe pagina 1din 3

LABORATORUL 2

Tipul de date fișier. Funcții de prelucrare a fișierelor.

Examinați diferențele:

CITIREA DATELOR DIN FIȘIER

Cand este cunoscut numarul n al valorilor Cand nu este cunoscut numarul valorilor din fisier

Enunt: Enunt:
Se citesc n numere intregi , calculati suma lor si Se citesc toate numerele intregi din fisierul date.in, calculati
afisati aceasta suma in fisierul date.out. suma lor si afisati aceasta suma in fisierul date.out.

#include<fstreamh> #include<fstream>
int main(){ int main(){
ifstream f(”date.in”); ifstream f(”date.in”);
ofstream g(”date.out”); ofstream g(”date.out”);
int x,s=0,n; int x,s=0;
f>>n; while(f>>x)
for(i=1;i<=n;i++){ s=s+x;
f>>x; g<<s;
s=s+x; f.close();g.close();
} }
g<<s;
f.close();g.close();
}

Rezolvarea sarcinilor cu profesorul


Problema: Buchete
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:
(Timp necesar: 15 minute)

Problema: Parola
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
(Timp necesar: 15 minute)
Probleme propuse pentru lucrul independent / perechi

Problema 1 factorial.in factorial.out


Să se scrie în fișierul factorial.out pe 2 coloane, primele n cupluri de 10 1 1
2 2
forma (n n!). numărul n se va citi din fișierul factorial.in.
3 6
4 24
5 120
6 720
7 5040
8 40320
9 362880
10 3628800
(Timp necesar: 15 minute)

Problema 2 note.in media.out


Din fișirul note.in se citesc cele 5 note obținute de un elev la 7 7.762
6
informatică pe parcursul unui semestru și nota de la teză. Scrieți un
7
algoritm care să afișeze media lui și să o scrie într-un fișier numit 7
media.out. Ultima notă din fișier este nota de la teză. Media 9
semestrială se va calcula după formula: 0,55*N.S.+0,45*N.T., N.S.
este media primelor 4 note, iar N.T. este nota de la teză. Rezultatul
final se va scrie în fișier cu 3 cifre după virgulă, fără rotungire.
(Timp necesar: 10 minute)

Problema 3 gigel.in gigel.out


Să presupunem că avem următorul fișier care pe prima linie conține 5 2 9 4 7 3
2 9 4 7 3 8 7 64 5 1
un număr natural nenul n, iar pe a doua linie se află n numere întregi
reprezentând elementele unui vector. Se cere citirea vectorului, pentru
elementele pare să se calculeze cuburile lor, iar pentru elementele
impare să se scadă elementul minim din vector, apoi salvarea
rezultatelor în fișierul gigel.out. În fișierul de ieșire se va scrie pe
prima linie vectorul initial, iar pe linia a doua – vectorul obținut.
(Timp necesar: 15 minute)

Problema 4 palindrom.in palindrom.out


Scrieti un program C/C++ care citeste din fisierul text 1221 Da
PALINDROM.IN, cel mult 100 de numere naturale aflate pe o 1210 Nu
singura linie, formate din cel mult 9 cifre fiecare, separate prin spatii
si dintre acestea le afiseazã pe ecran doar pe acelea care au
proprietatea de a fi palindrom. Daca nu se gãsesc numere palindrom,
se va afisa pe ecran valoarea -1. Un numãr are proprietatea de a fi
palindrom daca citit de la dreapta la stânga sau de la stânga la
dreapta are aceeasi valoare.
(Timp necesar: 10 minute)

Probleme pentru acasă


1. Scrieţi un program C/C++ care citeşte de pe prima linie a fişierului text
CMMDC.TXT trei numere naturale a, b, c formate din cel mult patru cifre fiecare,
separate prin cate un spaţiu si afişează pe ecran cel mai mare divizor comun al
acestora. De exemplu, daca din fişier se citesc numerele: 9 27 15, atunci se
afişează 3.
2. Se considera fişierul text DATE.IN care conţine exact 19 numere distincte formate fiecare din
maxim 2 cifre. Sa se afişeze in fişierul text DATE.OUT numărul care lipseşte din fişierul
DATE.IN.
3. Se citeşte de la tastatura un număr natural nenul n (n<1000). Scrieţi un program C/C++ care
construieşte fişierul text DIVIZORI.TXT care sa contina, pe prima linie, toţi divizorii lui n in
ordine strict descrescătoare. Divizorii vor fi separaţi prin spaţiu. De exemplu, daca n=10,
atunci fişierul DIVIZORI.TXT va conţine: 10, 5, 2, 1
4. Se citeste un tablou unidimensional cu n (1<=n<=100) componente numere naturale. Se cere
sa se calculeze si sa se afiseze suma elementelor din vector care sunt divizibile cu o valoare
naturala data a. Exemplu: Pentru n=7, v = {5, 12, 4, 9,11, 24, 8} si a=2, obtinem suma =
12+4+24+8=48.
5. Scrieţi un program C/C++ care citeşte din fişierul text DATE.IN cel mult 100 de numere
naturale nenule aflate pe o singura linie, formate din cel mult 4 cifre fiecare, separate prin spatii
si scrie in fişierul DATE.OUT numerele, in ordinea inversa fata de cea in care au fost citite, pe
o singura linie separate prin spatii. De exemplu daca din fişierul DATE.IN se citesc numerele
93 207 15 1982 3762, atunci conţinutul fişierului DATE.OUT va fi 3762 1982 15 207 93.

S-ar putea să vă placă și