Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Egzamin, termin II.cpp : Defines the entry point for the console application.
- //
- #include "stdafx.h"
- #include<iostream>
- #include<string>
- #include<cstdlib>
- #include<time.h>
- using namespace std;
- struct DATA {//format zapisu daty dla drzewa binarnego
- int r; int m; int d;
- };
- struct L_TRANSAKCJA {
- int ID_klienta;
- double kwota_tr;
- L_TRANSAKCJA* next;
- L_TRANSAKCJA* prev;
- };
- struct D_DATA {
- DATA *wskaznik;
- D_DATA *prawy_k;
- D_DATA *lewy_k;
- L_TRANSAKCJA* head;
- };
- int porownywanie_dat(DATA *data, DATA* data_s)
- {
- if (data->r == data_s->r && data->m == data_s->m && data->d == data_s->d)
- {
- return 0;
- }
- else if (data->r > data_s->r || data->m > data_s->m || data->d > data_s->d)
- {
- return -1;
- }
- else
- return 1;
- }
- D_DATA * szukaj(DATA *data, D_DATA * korzen)
- {
- D_DATA * temp;
- temp = korzen;
- if (korzen == NULL)
- return NULL;
- else if (korzen && porownywanie_dat(data, korzen->wskaznik) == 0) {
- return korzen;
- }
- if (korzen->lewy_k) {
- szukaj(data, korzen->lewy_k);
- }
- if (korzen->prawy_k)
- szukaj(data, korzen->prawy_k);
- else {
- cout << "nie ma podanej daty w bazie" << endl;
- return NULL;
- }
- }
- void dodaj_l(L_TRANSAKCJA *&head, const int &id_klienta, const double &kwota)
- {
- L_TRANSAKCJA * temp = new L_TRANSAKCJA{ id_klienta, kwota, nullptr, nullptr };
- if (head == NULL)
- {
- head = temp;
- }
- else
- {
- head->prev = temp;
- temp->next = head;
- head = temp;
- }
- }
- void dodaj(D_DATA *&head, DATA *wsk, DATA *wsk_2, L_TRANSAKCJA*& head_l)
- {
- D_DATA* temp = new D_DATA{ wsk, NULL, NULL, head_l };
- if (head == NULL) {
- head = temp;
- }
- else if (head->wskaznik->r < wsk_2->r)
- dodaj(head->prawy_k, wsk, wsk_2, head_l);
- else
- dodaj(head->lewy_k, wsk, wsk_2, head_l);
- }
- void wyswietl(D_DATA *&head)
- {
- if (head == NULL)
- return;
- cout << head->wskaznik->d << "." << head->wskaznik->m << "." << head->wskaznik->r << endl;
- wyswietl(head->lewy_k);
- wyswietl(head->prawy_k);
- }
- void wyswietl(L_TRANSAKCJA *&head)
- {
- L_TRANSAKCJA * temp = head;
- while (temp)
- {
- cout <<"id klienta: "<< temp->ID_klienta << endl <<"kwota transakcji: "<< temp->kwota_tr << endl;
- temp = temp->next;
- }
- }
- int usun_transakcje(L_TRANSAKCJA*& head, int id_klienta)
- {
- L_TRANSAKCJA* temp = head;
- int suma = 0;
- while (temp)
- {
- if (head->ID_klienta==id_klienta && temp->prev==NULL) {
- suma = suma+head->kwota_tr;
- temp = head->next;
- temp->prev = nullptr;
- delete head;
- head = temp;
- }
- else if(temp->ID_klienta==id_klienta) {
- L_TRANSAKCJA *temp_n = temp->next;
- L_TRANSAKCJA *temp_n1 = temp->prev;
- suma = suma + temp->kwota_tr;
- delete temp;
- temp_n1->next = temp_n;
- temp_n->prev = temp_n1;
- temp = temp_n;
- }
- temp=temp->next;
- }
- return suma;
- }
- void wyswietl_l(L_TRANSAKCJA *& head)
- {
- L_TRANSAKCJA* temp = head;
- if (temp == NULL)
- return;
- else
- {
- while (temp)
- {
- cout << "id klienta: " << temp->ID_klienta << " " << "kwota transakcji: " << temp->kwota_tr << endl;
- temp = temp->next;
- }
- }
- }
- void USUN_TRANSAKCJE_KLIENTA(DATA *&data, int& id_klienta, D_DATA *&head) {
- D_DATA * wsk = szukaj(data, head);
- usun_transakcje(wsk->head, id_klienta);
- }
- int main()
- {
- D_DATA* head = NULL;
- L_TRANSAKCJA* head2 = NULL;
- DATA* data = new DATA{ 12, 12, 2015 };
- DATA* data_1 = new DATA{ 03, 3, 1990 };
- DATA* data_2 = new DATA{ 13, 1, 1991 };
- DATA* data_3 = new DATA{ 15, 10, 1992 };
- DATA* data_4 = new DATA{ 29, 11, 1993 };
- DATA* data_5 = new DATA{ 30, 7, 1994 };
- DATA* data_6 = new DATA{ 31, 12, 1775 };
- DATA* wsk_2 = new DATA{ 12, 3, 1993 };
- srand(time(NULL));
- dodaj_l(head2, 5, 32.34);
- dodaj_l(head2, 32, 32.34);
- dodaj_l(head2, 21, 56.32);
- dodaj_l(head2, 32, 97.34);
- dodaj_l(head2, 23, 150.93);
- dodaj(head, data, wsk_2, head2);
- dodaj(head, data_1, wsk_2, head2);
- dodaj(head, data_2, wsk_2, head2);
- dodaj(head, data_3, wsk_2, head2);
- dodaj(head, data_4, wsk_2, head2);
- dodaj(head, data_5, wsk_2, head2);
- wyswietl(head);
- cout << szukaj(data_2, head)->wskaznik->d << endl;
- cout << usun_transakcje(head2, 32) << endl;
- wyswietl_l(head2);
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement