Matura z informatyki 2020 - rozwiązania zadań  

Odczyt danych z pliku

Na wstępie warto zaznaczyć, że obsługa plików w programie jest umiejętnością konieczną do napisania programu na maturze. Jeśli prześledzimy zadania z egzaminów z ostatnich kilkunastu lat, na każdym była potrzeba użycia poniższych rozwiązań.

Najprostsza metodą obsługi plików polecaną przez nas na maturę, jest użycie klasy ifstream oraz biblioteki fstream.

Przeanalizujmy poniższy przykład:

Mamy plik dane.txt, zawierający 5 linii tekstu. W każdym wierszu, mamy jedno słowo, np:

mama

dom

drzewo

kwiat

matura

Chcemy kolejno odczytać każdy z wyrazów, pobierając go do zmiennej o nazwie wyraz (typ zmiennej: string) a następnie wyświetlić na ekranie.

Kod realizujący to zadanie może wyglądać następująco:

#include <iostream>
#include <fstream>
using namespace std;
 
int main()
{
	// deklaracja zmiennej o nazwie wyraz
	string wyraz;
	ifstream odczyt; // użycie klasy ifstream oraz utworzenie strumienia o nazwie odczyt
	odczyt.open("dane.txt"); // odniesienie do pliku dane.txt - plik musi byc w tym samym katalogu co nasz program
	odczyt >> wyraz; // odczytanie wyrazu z pliku i zapisanie do zmiennej wyraz
	cout << wyraz << endl; // wyswietlenie pobranego wyrazu na ekranie
	odczyt.close(); // zamknięcie strumienia
	
	return 0;
}

Oczywiście tak zapisany program pozwoli nam na odczytanie tylko pierwszego wyrazu z pliku. W celu odczytania wszystkich wyrazów (jeden po drugim) musimy w naszym kodzie umieścić pętlę.

#include <iostream>
#include <fstream>
using namespace std;
 
int main()
{
	// deklaracja zmiennej o nazwie wyraz
	string wyraz;
	ifstream odczyt;   // użycie klasy ifstream oraz utworzenie strumienia o nazwie odczyt
	odczyt.open("dane.txt");   // odniesienie do pliku dane.txt - plik musi byc w tym samym katalogu co nasz program

	if(odczyt.good()==true){    //warunek, ktory sprawdza istnienie i poprawnosc pliku dane.txt - funkcja good()
        while(odczyt.good()==true){     // otwqarcie petli, ktora zczyta po kolei wszystkie wiersze
        odczyt >> wyraz;   // odczytanie wyrazu z pliku i zapisanie do zmiennej wyraz
        cout << wyraz << endl;   // wyswietlenie pobranego wyrazu na ekranie
	}
	}
	else
    {
        cout << "Blad pliku!" << endl;   // jeżeli pliku brak lub jest uszkodzony pojawia sie ten komunikat
    }

	odczyt.close(); // zamknięcie strumienia
	return 0;
}

Kod został powiększony o warunek (linia 12), dzięki któremu, w przypadku gdy zapomnimy umieścić plik w katalogu z zadaniem, zostanie wyświetlony błąd, zapisany w linii nr 20.

Oczywiście to nie jest jedyny sposób na odczytanie zawartości pliku, ale jeden z możliwych, który jest dość czytelny i prosty w zastosowaniu.

© 2017 MaturaInformatyka.pl || Kontakt: admin(malpa)maturainformatyka.pl

Search