Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- 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;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement