Advertisement
MrEfendi

Struktury w dynamicznych tablicach ATH Bielsko-Biała C++

Jan 11th, 2016
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.08 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. /*
  7.  * Struktura obiektu
  8.  */
  9.  
  10. struct TOsoba {
  11.     int id;
  12.     string imie;
  13.     string nazwisko;
  14. };
  15.  
  16. /*
  17.  * Tworzenie nowego obiektu w pamiecu.
  18.  * zwraca wskaźnik do nowego elementu
  19.  */
  20.  
  21. TOsoba * TworzOsobe(int id, string imie, string nazwisko) {
  22.     TOsoba *nowa_osoba = new TOsoba();
  23.  
  24.     nowa_osoba->id = id;
  25.     nowa_osoba->imie = imie;
  26.     nowa_osoba->nazwisko = nazwisko;
  27.  
  28.     return nowa_osoba;
  29. }
  30.  
  31. /*
  32.  * Tworzy dynamiczną tablicę o wielkości "i"
  33.  */
  34.  
  35. void TworzTablice(int i, TOsoba **&tab) {
  36.     tab = new TOsoba*[i];
  37. }
  38.  
  39. /*
  40.  * Uwuwa całą tablicę osób. Pozostaje tylko pusty wskaźnik który można wypełnić nową tablicą
  41.  */
  42.  
  43. void UsunTabliceOsob(TOsoba **&tab) {
  44.     delete[] tab;
  45. }
  46.  
  47. /*
  48.  * Dodanie nowego elementu do zadaniej tablicy dynamicznej.
  49.  * Funkcja potrzebuje wskaźnik do obiektu w pamięciu typu TOsoba
  50.  */
  51.  
  52. void DodajElementDoTablicy(TOsoba *obiekt, TOsoba **&tab) {
  53.     tab[obiekt->id] = obiekt;
  54. }
  55.  
  56. /*
  57.  * Funckja wyświetlenia osoby o podanym id w tabeli.
  58.  * ID w tabeli musi być równe ID w tablicy dynaminczej! <-- założenie aplikacji!
  59.  */
  60.  
  61. void WyswietlOsobe(int i, TOsoba **&tab) {
  62.      cout << "ID = " << tab[i]->id << " i:" << tab[i]->imie << " n:" << tab[i]->nazwisko << endl;
  63. }
  64.  
  65. /*
  66.  * Funckje wyszukiwania w bazie po imieniu albo nazwisku
  67.  * zwaraca -1 jeżeli brak wyniku
  68.  */
  69.  
  70. int ZnajdzOsobeBoImieniu(string imie, TOsoba **&tab, int wielkosc_tab) {
  71.     for (int i = 0; i < wielkosc_tab; i++) {
  72.         if (tab[i]->imie == imie) {
  73.             return i;
  74.         }
  75.     }
  76.     return -1;
  77. }
  78.  
  79. int ZnajdzOsobePoNazwisku(string nazwisko, TOsoba **&tab, int wielkosc_tab) {
  80.     for (int i = 0; i < wielkosc_tab; i++) {
  81.         if (tab[i]->nazwisko == nazwisko) {
  82.             return i;
  83.         }
  84.     }
  85.     return -1;
  86. }
  87.  
  88. /*
  89.  * Wykonanie aplikacji
  90.  */
  91.  
  92. int main() {
  93.  
  94.     // definicja bazy
  95.     TOsoba **baza;
  96.  
  97.     // jak wielka baza
  98.     int wielksc_bazy = 5;
  99.  
  100.     // stworzenie bazy
  101.     TworzTablice(wielksc_bazy, baza);
  102.  
  103.     // dodanie elementow
  104.     DodajElementDoTablicy(TworzOsobe(0, "Andrzej", "Kowalski"), baza);
  105.     DodajElementDoTablicy(TworzOsobe(1, "Janusz", "Pacult"), baza);
  106.     DodajElementDoTablicy(TworzOsobe(2, "Kartofel", "Kowalska"), baza);
  107.     DodajElementDoTablicy(TworzOsobe(3, "Marchewka", "Mariacki"), baza);
  108.     DodajElementDoTablicy(TworzOsobe(4, "Sraczka", "Jagoda"), baza);
  109.  
  110.     // wyswietlenie wszystkich wpisow z bazy
  111.     for (int i = 0; i < wielksc_bazy; i++) {
  112.         WyswietlOsobe(i, baza);
  113.     }
  114.  
  115.     // operacje wyszukiwania
  116.     cout << endl << "Wyszukaj po imieniu Kartofel:" << endl;
  117.     int pozycja_w_db = ZnajdzOsobeBoImieniu("Kartofel", baza, wielksc_bazy);
  118.     if (pozycja_w_db >= 0) {
  119.         cout << "Znaleziono:";
  120.         WyswietlOsobe(pozycja_w_db, baza);
  121.     } else {
  122.         cout << "Nie znaleziono :/" << endl;
  123.     }
  124.  
  125.     cout << endl << "Wyszukaj po imieniu Stanislaw:" << endl;
  126.     pozycja_w_db = ZnajdzOsobeBoImieniu("Stanislaw", baza, wielksc_bazy);
  127.     if (pozycja_w_db >= 0) {
  128.         cout << "Znaleziono:";
  129.         WyswietlOsobe(pozycja_w_db, baza);
  130.     } else {
  131.         cout << "Nie znaleziono :/" << endl;
  132.     }
  133.  
  134.     cout << endl << "Wyszukaj po nazwisku Jagoda:" << endl;
  135.     pozycja_w_db = ZnajdzOsobePoNazwisku("Jagoda", baza, wielksc_bazy);
  136.     if (pozycja_w_db >= 0) {
  137.         cout << "Znaleziono:";
  138.         WyswietlOsobe(pozycja_w_db, baza);
  139.     } else {
  140.         cout << "Nie znaleziono :/" << endl;
  141.     }
  142.  
  143.     cout << endl;
  144.  
  145.     // przyklad usuniecia bazy
  146.     UsunTabliceOsob(baza);
  147.  
  148.     cout << "nowe def." << endl;
  149.  
  150.     // ponowne utworzenie bazy na starym wskaźniku w pamięci
  151.     wielksc_bazy = 2;
  152.     TworzTablice(wielksc_bazy, baza);
  153.  
  154.     // dodanie przykladowych danych do bazy
  155.     for (int i = 0; i < wielksc_bazy; i++) {
  156.         DodajElementDoTablicy(TworzOsobe(i, "Andrzej", "Kowalski0"), baza);
  157.     }
  158.  
  159.     // wyświetlenie przykładowych danych
  160.     for (int i = 0; i < wielksc_bazy; i++) {
  161.         WyswietlOsobe(i, baza);
  162.     }
  163.  
  164.     return 0;
  165. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement