Obsługa plików dyskowych w C++ - file handling - zapis i odczyt prostych plików tekstowych i binarnych.
Cele ćwiczenia:
Umiejętność budowania algorytmów i ich postaci graficznej
Zapoznanie się ze sposobami otwierania plików od odczytu i zapisu danych
Umiejętność operowania (odczyt i zapis z/do pliku) danymi w systemie tekstowym i binarnym
Nowe zagadnienia:
Otwieranie plikowego strumienia wejścia i wyjścia w systemie tekstowym i binarnym
Sterowanie plikowym strumieniem wejścia i wyjścia (fout, fin), biblioteka <fstream.h>
Definicje nowych pojęć:
Określenie protokołu połączenia - sposobu komunikowania się z napędem na którym zapisujemy bądź z którego odczytujemy plik, czyli otwieranie pliku do zapisu lub odczytu:
fstream fout ( filename, mode ) ;
klasa (strumień do/z pliku) ścieżka dostępu do pliku tryb obsługi pliku
otwarcie pliku do zapisu fout lub do odczytu fin
(dla fout jeśli plik nie istnieje utworzenie pliku i otwarcie go zapisu)
filename np. “C:\\plik.txt”
mode ios :: out (tryb zapisu), ios :: in (tryb odczytu)
np.
fstream fout (“C:\\plik.txt”, ios :: out ) ; // otwarcie pliku plik.txt do zapisu w trybie
tekstowym (ios :: text - tryb domyślny)
fstream fout (“C:\\plik.dat”, ios :: out | ios :: binary ) ; // otwarcie pliku plik.dat zapisu w trybie
binarnym
fstream fin (“C:\\plik.txt”, ios :: in ) ; // otwarcie pliku plik.txt do odczytu w trybie
tekstowym
fstream fin (“C:\\plik.dat”, ios :: in | ios :: binary ) ; // otwarcie pliku plik.dat odczytu w trybie
binarnym
Zapisywanie lub odczytywanie danych z otwartego pliku:
fout - plikowy strumień wyjścia używając operatora << umieszczamy w strumieniu dane
np. cin >> x ; //przypisanie zmiennej x wartości wprowadzonej z klawiatury
fout << x ; //następnie zapisanie wartości zmiennej x do pliku
fin - plikowy strumień wejścia używając operatora >> umieszczamy w strumieniu dane
np. fin >> x ; //przypisanie zmiennej x wartości odczytanej z pliku
cout << x ; //następnie wydrukowanie wartości zmiennej x na ekranie monitora
Zamykanie pliku po zapisie w nim lub odczycie z niego danych, czynność konieczna aby nie utracić zawartości pliku:
fout . close ( ) ; //zamknięcie pliku otwartego do zapisu
fin . close ( ) ; //zamknięcie pliku otwartego do odczytu
Zadanie 1
Napisz program zapisujący wartości elementów wektora dziesięcioelementowego w pliku tekstowym. Wartości elementów wektora mają być wprowadzane z klawiatury.
#include <iostream>
#include <fstream>
#include <conio.h>
#define M 10
using namespace std;
int main()
{
int i=0;
float f [M];
char *plik ="C:\\dane.txt"; //ścieżka dostępu do pliku
fstream fout (plik,ios::out); //utworzenie i otwarcie pliku do zapisu w trybie tekstowym
while(i<M)
{
cin>>f[i];
fout<<'\t'<<f[i];
i++;
}
fout.close(); //zamknięcie pliku otwartego do zapisu
getch();
return 0;
}
Zadanie 2
Napisz program odczytujący wartości z pliku tekstowego utworzonego w zadaniu 1, program ma zapisać te wartości w wektorze, a następnie obliczyć wartości pierwiastka kwadratowego elementów wektora zapisując wyniki w oddzielnym wektorze.. Wartości elementów wektora wynikowego mają być wprowadzane na ekran monitora.
#include <iostream>
#include <fstream>
#include <conio.h>
#include <cmath >
#define M 10
using namespace std;
main()
{
int i=0;
float f[M],w[M];
char *plik="C:\\dane.txt"; //ścieżka dostępu do pliku
fstream fin(plik,ios::in); //otwarcie pliku do odczytu w trybie tekstowym
if (fin==0) //sprawdzenie czy plik istnieje
cout<<"Bląd otwarcia pliku !!!";
else
{
while(i<M)
{
fin>>f[i];
w[i]=sqrt(f[i]);
cout<<'\t'<<w[i]<<'\n';
i++;
}
}
fin.close(); //zamknięcie pliku otwartego do odczytu
getch();
return 0;
}
Zadanie 1 Zadanie 2
Zadania C++ - 10
Napisz program, który utworzy na dysku plik i otworzy go do zapisu w trybie tekstowym, następnie wprowadzi z klawiatury i zapisze w pliku zdanie „ Mój pierwszy plik tekstowy w C++”.
W oknie edycyjnym kompilatora zapisz następujące dane:
1 → 2 → 3 ↵
4 → 5 → 6 ↵
7 → 8 → 9
zapisz plik jako tekstowy (*.txt) na dysku.
Napisz program, który otworzy do odczytu utworzony plik, pobierze z niego dane i przypisze te wartości elementom tablicy X[3][3], następnie program podniesie wartości elementów tablicy do kwadratu i wyprowadzi na ekran monitora.
Napisz program, który otworzy plik tekstowy z zadania 2 przypisze dane z pliku elementom tablicy następnie doda do elementów tablicy wartość 1.25 i zapisze macierz wynikową w pliku w trybie binarnym.
Napisz program, który otworzy plik binarny z zadania 3 wprowadzi dane z pliku do tablicy A następnie otworzy plik tekstowy z zadania 2 i wprowadzi dane z pliku do tablicy B po czym obliczy sumę macierzy A i B zapisując wyniki w tablicy C którą, wyprowadzi na ekran monitora i zapisze w pliku binarnym.
Napisz program, który otworzy plik tekstowy z zadania 1 dopisze do niego zdanie „To już mój piąty program do obsługi plików w C++”.
Zapisz w pliku tekstowym następujące dane wg rysunku,
Długość belki l.
Promień kuli r.
Ciężar właściwy materiału kuli γ.
Naprężenia dopuszczalne na zginanie materiału belki kg.
Naprężenia dopuszczalne na rozciąganie materiału belki kr.
Napisz program, który pobierze dane z pliku i obliczy minimalne wymiary belki o przekroju kwadratowym i liny o przekroju okrągłym, (σg=M/W≤kg, W=a3/6, σr=F/S≤kg, S=a2).
Ćwiczenia laboratoryjne nr 10
„Język Programowania” str. 1