Prelucrarea fișierelor în limbajul C++
:: Vă recomandăm ca în sursa programelor să nu utilizați diacritice.
Vă invităm să aplicăm cunoștințele dobândite.
Test Drag & Drop – Fișiere în C++
Trage răspunsul corect în dreptul fiecărei întrebări:
Răspunsuri:
Probleme (1):
numar.in și să se afișeze pătratul lui în numar.out.
date.in două numere întregi și să se scrie în date.out suma lor.
vector.in conține pe prima linie un număr n, iar pe a doua linie n numere întregi. Să se scrie în vector.out valorile crescute cu 1.
pare.in care conține pe o linie n numere. Rezultatul se scrie în pare.out.
cuvant.in conține un șir de caractere. Să se determine și să se scrie în cuvant.out câte vocale conține șirul.
Probleme (2):
Enunț 1: Scrieți un program care citește de la tastatură n linii și le scrie într-un fișier text, prin adăugare, până la acționarea tastei #.
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
ofstream fout("fisier.txt", ios::app); // deschidere in modul adaugare
if (!fout) {
cerr << "Eroare la deschiderea fisierului.\n";
return 1;
}
string linie;
cout << "Introduceti linii (terminati cu #):\n";
while (true) {
getline(cin, linie);
if (linie == "#") break;
fout << linie << '\n';
}
fout.close();
return 0;
}
Enunț 2: Scrieți un program care să afișeze ecran conținutul unui fișier text.
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
ifstream fin("fisier.txt");
if (!fin) {
cerr << "Fisierul nu a putut fi deschis.\n";
return 1;
}
string linie;
while (getline(fin, linie)) {
cout << linie << '\n';
}
fin.close();
return 0;
}
Enunț 3: Se citește dintr-un fișier numit date4.in, pe prima linie numărul de elemente ale unui șir de numere reale, iar pe a doua linie elementele șirului. Să se afișeze pe ecran maximul, minimul și câtul dintre maxim și minim. Atenție: dacă minimul este 0, se va afișa un mesaj corespunzător în locul câtului.
#include <iostream>
#include <fstream>
#include <vector>
#include <limits>
using namespace std;
int main() {
ifstream fin("date4.in");
if (!fin) {
cerr << "Eroare la deschiderea fisierului.\n";
return 1;
}
int n;
fin >> n;
vector<double> v(n);
for (int i = 0; i < n; ++i) {
fin >> v[i];
}
double minim = numeric_limits<double>::max();
double maxim = numeric_limits<double>::lowest();
for (double x : v) {
if (x < minim) minim = x;
if (x > maxim) maxim = x;
}
cout << "Maximul: " << maxim << '\n';
cout << "Minimul: " << minim << '\n';
if (minim != 0) {
cout << "Catul maxim/minim: " << maxim / minim << '\n';
} else {
cout << "Nu se poate imparti la 0.\n";
}
return 0;
}
Enunț 4: Se citesc două numere întregi a și b de la tastatură. Să se scrie într-un fișier pare.txt toate numerele pare din intervalul închis [a, b], în ordine crescătoare.
#include <iostream>
#include <fstream>
using namespace std;
int main() {
int a, b;
cout << "Introduceti valorile pentru a si b: ";
cin >> a >> b;
if (a > b) swap(a, b);
ofstream fout("pare.txt");
if (!fout) {
cerr << "Eroare la deschiderea fisierului de iesire.\n";
return 1;
}
for (int i = a; i <= b; ++i) {
if (i % 2 == 0) {
fout << i << ' ';
}
}
fout.close();
cout << "Numerele pare au fost scrise in fisierul pare.txt\n";
return 0;
}
