Facebook
From asdas, 6 Years ago, written in C++.
Embed
Download Paste or View Raw
Hits: 244
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. typedef struct Osoba
  5. {
  6.         string nazwisko;
  7.         int data_ur;
  8.         bool plec;
  9.         Osoba *nast; //pole lista jednokierunkowa pomaga w nastepnych elementach
  10.         Osoba *pop; //przechowujemy adres na poperzdni
  11.         Osoba *dziecko;
  12.         //Praca *praca //nowa struktura wiecej informacji przechowuje
  13.         Osoba(): nazwisko(" "), data_ur(0), plec(0),nast(NULL){}
  14.         Osoba(const char*n, int du, bool p) : nazwisko(n), data_ur(du), plec(p),nast(NULL) {}
  15.         void wypisz()
  16.         {
  17.                 cout << nazwisko << "  " << data_ur;
  18.                 if (plec)
  19.                         cout << "m";
  20.                 else
  21.                         cout << "k";
  22.                 cout << endl;
  23.         }
  24. }Os;
  25. void wypisz(Os*h) //wsakznik na glowe
  26. {
  27.         while (h != NULL)
  28.         {
  29.                 h->wypisz(); //wypisz(h);
  30.                 h = h->nast;
  31.         }
  32. }
  33. void liczkobiety(Osoba *h)
  34. {
  35.         int k = 0;
  36.         while (h != NULL)
  37.         {
  38.                 if (!h->plec)  //do kobiet do mezczyzn bez "!"
  39.                         k++;
  40.                 h = h->nast;
  41.         }
  42.         cout <<"ilosc kobiet = "<< k << endl;
  43. }
  44.  
  45. Os* dodaj(Os * head, const char *n,int du, bool p) //dodanie do listy //Os * -przechowuje adres struktury //Os** -adres adresu czyli adres głowy w srodku muszą być gwiazeczki jak "**"
  46. {  //    (wOS & head,   ...  nowa funkcje trzeba zrobic
  47.         Os*tmp = new Os(n, du, p);
  48.         tmp->nast = head; //tu dodalismy tylko
  49.         //head = NULL;   //element na początek listy
  50.         //return tmp;
  51.         // te dwie byly przy jedenj *
  52.         head = tmp;
  53. }
  54. void dodajnakoniec(Os & head, const char *n, int du, bool p) -zle
  55. { if
  56.         Os* head1 = head;
  57.        
  58.                 while (head1->nast != NULL)
  59.                         head = head1->nast;
  60.         head = new Os("wer", 1234, true);
  61.                 head = head1;
  62.  
  63. }
  64. Os * dodajkoniec(wOs head, const char*n, int du, bool p)
  65. {
  66.         Os* tmp = new Os(n, du, p);
  67.         if (head == NULL)
  68.                 return tmp;
  69.         Os * tmp2 = head;
  70.         while (tmp2->nast != NULL) tmp2 = tmp2->nast;
  71.         tmp2->nast = tmp;
  72.         return head;
  73. }
  74. int main()
  75. {
  76.         Os * head = NULL; //przechowuje adres pierwszego elemetnu najlepiej null
  77.         //head = new Os("Nazwisko1", 1997, true); //dopisanie do tablicy pierwszy element listy
  78.         //head->nast= new Os("Nazwisko2", 1987, false); // element 2
  79.         //head->nast->nast = new Os("Nazwisko2", 1987, true); //element 3 i tak mozna dalej
  80.         //head->nast->nast->nast = new Os("Nazwisko3", 1966, false); //i tak dalej ale takie cos jest niekomfortowe
  81.         //head = new Os;
  82.         //head->nazwisko = "sa"; //mozna i tak zrobic
  83.                 //head->nast = NULL;
  84.         head=dodajkoniec(head,"Nazwisko2k", 1987, false); //bedzie na końcu  wyzej dziala normalnie ze pierwszy jest pierwszy
  85.         head=dodaj (head,"Nazwisko2", 1987, true);  //dodawanie do listy
  86.     head=dodaj (head,"Nazwisko3", 1966, false);  //bedzie na początku
  87.         wypisz(head);
  88.         liczkobiety(head);
  89.         //Os o;
  90.         //o.wypisz();
  91.         //wypisz(o);
  92.         cin.get();
  93.         return 0;
  94. }