imagine-fundal

Blog / 📃 Metode de citire a datelor (consolă + fișiere) în limbajul C++
facebook instagram whatsapp tiktok twitter

     În tutorialul de astăzi vom parcurge câteva metode de citire a datelor care apar frecevent în problemele de clasă, dar și în cele de performanță. Fiind cel mai cunoscut limbaj de către elevi și studenți, algortimii prezentați în acest articol vor fi scriși în C++. Totuși, trebuie menționat că funcționează în majoritatea limbajelor de programare. Înainte de a începe, prin citire de date ne referim la primirea numerelor, șirurilor de caractere sau al oricărui tip de dată în memoria variabilelor declarate în program.

     Primul algortim pe care îl vom discuta este cel de citire N elemente (consola). Un exemplu de situație în care îl putem folosi este: Se citește un vector cu N elemente numere întregi. Pentru acesta vom folosi o structură repetitivă cu număr cunoscut de pași (for), precum în blocul de cod de mai jos.

#include <iostream>
using namespace std;
int main() {
	int v[1001], n;
	cin >> n;
	for (int i = 1; i <= n; i++)
		cin >> v[i]; // prelucrare elemente
	return 0;
}

Alt algoritm foarte important este citirea datelor până la întâlnirea numărului zero (consola). Situația în care îl putem folosi sună astfel: Se citesc numere până la apariția lui 0. Pentru acesta vom folosi o structură repetitivă cu număr necunoscut de pași (while), asemenea codului de mai jos.

#include <iostream>
using namespace std;
int main() {
    int v[1001], i = 1;
    while (cin >> v[i] && v[i]!= 0)
        i++; // prelucrare elemente
    return 0;
}

     Ultimul, dar nu cel din urmă, algoritmul de citire din fișiere. Apare în probleme în cazul în care nu se folosește consola / terminalul, iar datele se preiau și se afișează în fișiere de pe sistem. Pentru acesta vom folosi o librărie separată, fstream (file stream), împreună cu alte două comenzi pe care le puteți vedea mai jos. Vom folosi operatorii definiți in și out pentru intrarea, respectiv ieșirea datelor, în loc de cin și cout. Între ghilimele definiției vom pune numele fișierelor. Un exemplu de situație este: Se citesc din fișierul date.in N numere naturale. [...] Să se afișeze în date.out rezultatul obținut.

#include <fstream>
using namespace std;
ifstream in("date.in");
ofstream out("date.out");
int main() {
    int v[1001], n;
    in >> n;
    for (int i = 1; i <= n; i++)
        in >> v[i]; // prelucrare elemente
    for (int i = 1; i <= n; i++)
        out << v[i] << " ";
    return 0;
}

     Pentru lucrul cu fișiere există un artificiu de simplificare. Putem folosi comanda #define, pentru a defini operatorul cin echivalent cu in, respectiv, cout, cu out, astfel, putem testa programul în consolă, iar apoi adăuga algoritmul de fișiere fără a trebui modificat fiecare operator în parte. De reținut este că aceasta comandă, #define, permite multe modificări asupra sintaxei. Mai jos puteți vedea sintaxa exactă.

#include <fstream>
using namespace std;
ifstream in("date.in");
ofstream out("date.out");
#define cin in
#define cout out
int main() {
    int v[1001], n;
    cin >> n;
    for (int i = 1; i <= n; i++)
        cin >> v[i]; // prelucrare elemente
    for (int i = 1; i <= n; i++)
        cout << v[i] << " ";
    return 0;
}

imagine

cssbattle / 23

imagine

pbinfo / 3663

imagine

pbinfo / 40