Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Krzysztof_Betkowski_Kolokwium_2.cpp
- #include <iostream>
- #include <fstream>
- #include <time.h>
- #include <string>
- using namespace std;
- //Struktura Data
- struct Data {
- int dzien;
- string miesiac;
- Data() { dzien = 1; miesiac = "styczen"; } //konstruktor domyślny
- Data(int _dzien, string _miesiac) { dzien = _dzien; miesiac = _miesiac; } //konstruktor dla argumentów
- void showData() { cout << dzien << " " << miesiac << endl; } //metoda wyświetlająca elementy struktury
- };
- //Struktura S
- struct S {
- float wartosc;
- Data data;
- static int ilosc; //ilość wszystkich elementów danego typu (wspólny dla wszystkich obiektów)
- S() { wartosc = 0; ilosc++; } //konstruktor domyślny
- S(float _wartosc, int _dzien, string _miesiac) { //konstruktor dla argumentów
- wartosc = _wartosc;
- data.dzien = _dzien;
- data.miesiac = _miesiac;
- ilosc++;
- }
- ~S() { ilosc--; } //dekonstruktor
- void showS() { cout << wartosc << " "; data.showData(); }
- void saveToFile() { //metoda zapisu do pliku (tryb otwarcia ios::app)
- ofstream file("zadanie.txt", ios::app);
- file << wartosc << " " << data.dzien << " " << data.miesiac << endl;
- file.close();
- }
- };
- int S::ilosc; //początkowa wartość ilość = 0;
- //Funkcja tworząca nowy obiekt dynamiczny o składowych wprowadzonych przez użytkownika
- S* createS() {
- S* ptr = new S; //stwórz nowy obiekt dynamiczny (konstruktor domyślny - bez argumentów)
- cout << "Wprowadź wartość, dzień i miesiąc:\n";
- cin >> ptr->wartosc >> ptr->data.dzien >> ptr->data.miesiac; //modyfikacja składowych obiektu
- return ptr;
- }
- //Funkcja odczytująca dane z pliku
- void readFromFile(int size) {
- S* array = new S[size]; //tablica dynamiczna typu S ('array' to wskaźnik na pierwszy element tablicy)
- ifstream file("zadanie.txt");
- if (!file.good()) cout << "Nie udało się otworzyć pliku!\n";
- else for (int i = 0; !file.eof(); i++) {
- file >> (array + i)->wartosc >> (array + i)->data.dzien >> (array + i)->data.miesiac; //zasada ta sama co w 'createS()', 'i' to kolejny element tablicy
- }
- for (int i = 0; i < size; i++) {
- (array + i)->showS(); //wyświetl zawartość elementu
- }
- delete[] array; //usuwanie obiektu dynamicznego, zwalnianie pamięci
- }
- int main()
- {
- setlocale(LC_ALL, "pl_PL"); //polskie znaczki :P
- srand(time(NULL));
- ofstream file ("zadanie.txt", ios::trunc); file.close(); //opróźnianie pliku
- S s1(static_cast<float>(rand() % 100), 12, "luty"),
- s2(static_cast<float>(rand() % 100), 15, "czerwiec"); //tworzenie 'randomowych' obiektów typu S
- s1.showS(); s2.showS(); //wyświetlanie obiektów s1, s2
- s1.saveToFile(); s2.saveToFile(); //dopisanie do pliku obiektów s1, s2
- S* p1 = createS(), *p2 = createS(); //tworzenie obiektów dynamicznych p1, p2 z wykorzystaniem funkcji 'createS()'
- p1->saveToFile(); p2->saveToFile(); //dopisanie do pliku obiektów dynamicnzych p1, p2
- readFromFile(p2->ilosc); //odczytanie danych z pliku z wykorzystaniem tablicy dynamicznej o rozmiarze równym ilości obiektów ( 'readFromFile(int size){...}' )
- delete p1, p2; //usuwanie obiektów dynamicznych, zwalnianie pamięci
- system("PAUSE");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement