#include #include using namespace std; /* * Struktura obiektu */ struct TOsoba { int id; string imie; string nazwisko; }; /* * Tworzenie nowego obiektu w pamiecu. * zwraca wskaźnik do nowego elementu */ TOsoba * TworzOsobe(int id, string imie, string nazwisko) { TOsoba *nowa_osoba = new TOsoba(); nowa_osoba->id = id; nowa_osoba->imie = imie; nowa_osoba->nazwisko = nazwisko; return nowa_osoba; } /* * Tworzy dynamiczną tablicę o wielkości "i" */ void TworzTablice(int i, TOsoba **&tab) { tab = new TOsoba*[i]; } /* * Uwuwa całą tablicę osób. Pozostaje tylko pusty wskaźnik który można wypełnić nową tablicą */ void UsunTabliceOsob(TOsoba **&tab) { delete[] tab; } /* * Dodanie nowego elementu do zadaniej tablicy dynamicznej. * Funkcja potrzebuje wskaźnik do obiektu w pamięciu typu TOsoba */ void DodajElementDoTablicy(TOsoba *obiekt, TOsoba **&tab) { tab[obiekt->id] = obiekt; } /* * Funckja wyświetlenia osoby o podanym id w tabeli. * ID w tabeli musi być równe ID w tablicy dynaminczej! <-- założenie aplikacji! */ void WyswietlOsobe(int i, TOsoba **&tab) { cout << "ID = " << tab[i]->id << " i:" << tab[i]->imie << " n:" << tab[i]->nazwisko << endl; } /* * Funckje wyszukiwania w bazie po imieniu albo nazwisku * zwaraca -1 jeżeli brak wyniku */ int ZnajdzOsobeBoImieniu(string imie, TOsoba **&tab, int wielkosc_tab) { for (int i = 0; i < wielkosc_tab; i++) { if (tab[i]->imie == imie) { return i; } } return -1; } int ZnajdzOsobePoNazwisku(string nazwisko, TOsoba **&tab, int wielkosc_tab) { for (int i = 0; i < wielkosc_tab; i++) { if (tab[i]->nazwisko == nazwisko) { return i; } } return -1; } /* * Wykonanie aplikacji */ int main() { // definicja bazy TOsoba **baza; // jak wielka baza int wielksc_bazy = 5; // stworzenie bazy TworzTablice(wielksc_bazy, baza); // dodanie elementow DodajElementDoTablicy(TworzOsobe(0, "Andrzej", "Kowalski"), baza); DodajElementDoTablicy(TworzOsobe(1, "Janusz", "Pacult"), baza); DodajElementDoTablicy(TworzOsobe(2, "Kartofel", "Kowalska"), baza); DodajElementDoTablicy(TworzOsobe(3, "Marchewka", "Mariacki"), baza); DodajElementDoTablicy(TworzOsobe(4, "Sraczka", "Jagoda"), baza); // wyswietlenie wszystkich wpisow z bazy for (int i = 0; i < wielksc_bazy; i++) { WyswietlOsobe(i, baza); } // operacje wyszukiwania cout << endl << "Wyszukaj po imieniu Kartofel:" << endl; int pozycja_w_db = ZnajdzOsobeBoImieniu("Kartofel", baza, wielksc_bazy); if (pozycja_w_db >= 0) { cout << "Znaleziono:"; WyswietlOsobe(pozycja_w_db, baza); } else { cout << "Nie znaleziono :/" << endl; } cout << endl << "Wyszukaj po imieniu Stanislaw:" << endl; pozycja_w_db = ZnajdzOsobeBoImieniu("Stanislaw", baza, wielksc_bazy); if (pozycja_w_db >= 0) { cout << "Znaleziono:"; WyswietlOsobe(pozycja_w_db, baza); } else { cout << "Nie znaleziono :/" << endl; } cout << endl << "Wyszukaj po nazwisku Jagoda:" << endl; pozycja_w_db = ZnajdzOsobePoNazwisku("Jagoda", baza, wielksc_bazy); if (pozycja_w_db >= 0) { cout << "Znaleziono:"; WyswietlOsobe(pozycja_w_db, baza); } else { cout << "Nie znaleziono :/" << endl; } cout << endl; // przyklad usuniecia bazy UsunTabliceOsob(baza); cout << "nowe def." << endl; // ponowne utworzenie bazy na starym wskaźniku w pamięci wielksc_bazy = 2; TworzTablice(wielksc_bazy, baza); // dodanie przykladowych danych do bazy for (int i = 0; i < wielksc_bazy; i++) { DodajElementDoTablicy(TworzOsobe(i, "Andrzej", "Kowalski0"), baza); } // wyświetlenie przykładowych danych for (int i = 0; i < wielksc_bazy; i++) { WyswietlOsobe(i, baza); } return 0; }