From a028163af1f6759e067d060e1c9ebedb2e834347 Mon Sep 17 00:00:00 2001 From: Susmita-code007 Date: Sat, 21 Sep 2019 22:00:12 +0530 Subject: [PATCH] solved the problem --- a.out | Bin 0 -> 122684 bytes driver.cpp | 100 ++++++++++++++++++++++ output.txt | 207 ++++++++++++++++++++++++++++++++++++++++++++++ split_service.cpp | 150 +++++++++++++++++++++++++++++++++ split_service.h | 40 +++++++++ user.h | 31 +++++++ 6 files changed, 528 insertions(+) create mode 100755 a.out create mode 100644 driver.cpp create mode 100644 output.txt create mode 100644 split_service.cpp create mode 100644 split_service.h create mode 100644 user.h diff --git a/a.out b/a.out new file mode 100755 index 0000000000000000000000000000000000000000..a9697ee01fadf9e586f281b061ccd16df6c475b7 GIT binary patch literal 122684 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 G@Baas72cl! literal 0 HcmV?d00001 diff --git a/driver.cpp b/driver.cpp new file mode 100644 index 0000000..17ad3fb --- /dev/null +++ b/driver.cpp @@ -0,0 +1,100 @@ +#include "split_service.h" + +int main() +{ + SplitService *ser = new SplitService(4); + + User *U1 = new User(0, "u1", "Susmita", "sm@com", "11890"); + ser->set_user_table("u1", U1); + + User *U2 = new User(1, "u2", "Ayan", "ay@com", "11890"); + ser->set_user_table("u2", U2); + + User *U3 = new User(2, "u3", "Moumita", "mm@com", "11890"); + ser->set_user_table("u3", U3); + + User *U4 = new User(3, "u4", "Subhayan", "sb@com", "11890"); + ser->set_user_table("u4", U4); + + int cont = 0; + do{ + cout << "Enter operation " << endl; + string op; + cin >> op; + if (op == "SHOW") + { + cout << "for a specific user?" << endl; + string ans; + cin >> ans; + if (ans == "YES" || ans == "Yes" || ans == "yes") + { + cout << "Enter user id" << endl; + string u; + cin >> u; + ser->SHOW(u, 0); + } + else + { + ser->SHOW_ALL(); + } + } + else if (op == "EXPENSE") + { + int num = 0; + string payer; + vector users; + string type; + int total; + cout << "Enter payer " << endl; + cin >> payer; + cout << "Enter total " << endl; + cin >> total; + cout << "Enter no of users " << endl; + cin >> num; + cout << "enter user_ids " << endl; + for (int i = 0; i> u; + users.push_back(u); + } + cout << "Enter type of expense, EXACT, EQUAL or PERCENT " << endl; + cin >> type; + if (type == "EQUAL") + ser->EXPENSE_EQUAL(total, payer, users); + else if (type == "EXACT") + { + cout << "Enter amounts " << endl; + vector amounts; + for (int i = 0; i> amount; + amounts.push_back(amount); + } + ser->EXPENSE_EXACT(total, payer, users, amounts); + } + else if (type == "PERCENT") + { + cout << "Enter percents " << endl; + vector percents; + for (int i = 0; i> percent; + percents.push_back(percent); + } + ser->EXPENSE_PERCENT(total, payer, users, percents); + } + else + cout << "INVALID TYPE" << endl; + } + else + cout << "INVALID OPERTAION " << endl; + + cout << "Press 1 to continue" << endl; + cin >> cont; + }while (cont == 1); + + return 0; +} diff --git a/output.txt b/output.txt new file mode 100644 index 0000000..b461780 --- /dev/null +++ b/output.txt @@ -0,0 +1,207 @@ +Enter operation +SHOW +for a specific user? +n +No balances +Press 1 to continue +1 +Enter operation +SHOW +for a specific user? +YES +Enter user id +u1 +No balances +Press 1 to continue +1 +Enter operation +EXPENSE +Enter payer +u2 +Enter total +1000 +Enter no of users +4 +enter user_ids +u1 u2 u3 u4 +Enter type of expense, EXACT, EQUAL or PERCENT +EQUAL +Press 1 to continue +1 +Enter operation +SHOW +for a specific user? +yes +Enter user id +u1 +u1 owes u2: 250 +Press 1 to continue +1 +Enter operation +SHOW +for a specific user? +yes +Enter user id +u2 +u1 owes u2: 250 +u3 owes u2: 250 +u4 owes u2: 250 +Press 1 to continue +1 +Enter operation +SHOW +for a specific user? +n +u1 owes u2: 250 +u3 owes u2: 250 +u4 owes u2: 250 +Press 1 to continue +1 +Enter operation +EXPENSE +Enter payer +u3 +Enter total +2000 +Enter no of users +3 +enter user_ids +u1 u2 u4 +Enter type of expense, EXACT, EQUAL or PERCENT +EXACT +Enter amounts +1000 500 500 +Press 1 to continue +1 +Enter operation +SHOW +for a specific user? +yes +Enter user id +u3 +u1 owes u3: 1000 +u2 owes u3: 250 +u4 owes u3: 500 +Press 1 to continue +1 +Enter operation +EXPENSE +Enter payer +u1 +Enter total +1000 +Enter no of users +1 +enter user_ids +u3 +Enter type of expense, EXACT, EQUAL or PERCENT +PERCENT +Enter percents +100 +Press 1 to continue +1 +Enter operation +SHOW +for a specific user? +yes +Enter user id +u1 +u1 owes u2: 250 +Press 1 to continue +1 +Enter operation +SHOW +for a specific user? +yes +Enter user id +u3 +u2 owes u3: 250 +u4 owes u3: 500 +Press 1 to continue +1 +Enter operation +EXPENSE +Enter payer +u2 +Enter total +250 +Enter no of users +1 +enter user_ids +u3 +Enter type of expense, EXACT, EQUAL or PERCENT +EXACT +Enter amounts +250 +Press 1 to continue +1 +Enter operation +SHOW +for a specific user? +n +u1 owes u2: 250 +u4 owes u2: 250 +u4 owes u3: 500 +Press 1 to continue +1 +Enter operation +EXPENSE +Enter payer +u4 +Enter total +750 +Enter no of users +2 +enter user_ids +u2 u3 +Enter type of expense, EXACT, EQUAL or PERCENT +PERCENT +Enter percents +25 70 +invalid_entry!!! +Press 1 to continue +1 +Enter operation +EXPENSE +Enter payer +u4 +Enter total +750 +Enter no of users +2 +enter user_ids +u2 u3 +Enter type of expense, EXACT, EQUAL or PERCENT +EXACT +Enter amounts +250 500 +Press 1 to continue +1 +Enter operation +SHOW +for a specific user? +n +u1 owes u2: 250 +Press 1 to continue +1 +Enter operation +EXPENSE +Enter payer +u1 +Enter total +250 +Enter no of users +1 +enter user_ids +u2 +Enter type of expense, EXACT, EQUAL or PERCENT +EQUAL +Press 1 to continue +1 +Enter operation +SHOW +for a specific user? +n +No balances +Press 1 to continue +0 diff --git a/split_service.cpp b/split_service.cpp new file mode 100644 index 0000000..fd89d32 --- /dev/null +++ b/split_service.cpp @@ -0,0 +1,150 @@ +#include "split_service.h" + +void SplitService::set_user_table(string user_id, User* t) +{ + user_table[user_id] = t; + users.push_back(user_id); +} + +void SplitService::EXPENSE_EQUAL(int total, string payer, vector table) +{ + int count = table.size(); + int per_share = total/count; + unordered_map ::iterator itr = user_table.find(payer); + if (itr == user_table.end()) + { + cout << "no such user exists!! " << endl; + return; + } + else + { + int row = itr->second->get_seq(); + for (int i = 0; i < count; i++) + { + unordered_map ::iterator itr1 = user_table.find(table[i]); + if (itr1 != user_table.end()) + { + int col = itr1->second->get_seq(); + expense_table[row][col] = expense_table[row][col] + per_share; + expense_table[col][row] = expense_table[col][row] - per_share; + } + } + } +} + +void SplitService::EXPENSE_EXACT(int total, string payer, vector table, vector amount) +{ + int count = table.size(); + int total_per = 0; + for (int i = 0; i < count; i++) + { + total_per += amount[i]; + } + if (total_per != total) + { + cout << "invalid_entry!!!" << endl; + return; + } + unordered_map ::iterator itr = user_table.find(payer); + if (itr == user_table.end()) + { + cout << "no such user exists!! " << endl; + return; + } + else + { + int row = itr->second->get_seq(); + for (int i = 0; i < count; i++) + { + unordered_map ::iterator itr1 = user_table.find(table[i]); + if (itr1 != user_table.end()) + { + int col = itr1->second->get_seq(); + expense_table[row][col] = expense_table[row][col] + amount[i]; + expense_table[col][row] = expense_table[col][row] - amount[i]; + } + } + } +} + +void SplitService::EXPENSE_PERCENT(int total, string payer, vector table, vector percent) +{ + int count = table.size(); + int total_per = 0; + for (int i = 0; i < count; i++) + { + total_per += percent[i]; + } + if (total_per != 100) + { + cout << "invalid_entry!!!" << endl; + return; + } + unordered_map ::iterator itr = user_table.find(payer); + if (itr == user_table.end()) + { + cout << "no such user exists!! " << endl; + return; + } + else + { + int row = itr->second->get_seq(); + for (int i = 0; i < count; i++) + { + float amount = float(percent[i]/100); + unordered_map ::iterator itr1 = user_table.find(table[i]); + if (itr1 != user_table.end()) + { + int col = itr1->second->get_seq(); + expense_table[row][col] = expense_table[row][col] + (float(total) * amount); + expense_table[col][row] = expense_table[col][row] - (float(total) * amount); + } + } + } +} +void SplitService::SHOW_ALL() +{ + int balance_exist = 0; + for (int i = 0; i::iterator itr = user_table.find(u); + int balance_exist = 0; + if (itr == user_table.end()) + { + cout << "no such user exists!! " << endl; + return 0; + } + int seq_no = itr->second->get_seq(); + for (int i = 0; i< num_of_user; i++) + { + if (i != seq_no) + { + if (expense_table[seq_no][i] != 0) + { + balance_exist = 1; + if (expense_table[seq_no][i] > 0) + { + cout << users[i] << " owes " << u << ": " << expense_table[seq_no][i] << endl; + } + else + { + if (all == 0) + cout << u << " owes " << users[i] << ": " << 0 - expense_table[seq_no][i] << endl; + } + } + } + } + if (balance_exist == 0 && (all == 0)) + cout << "No balances" << endl; + return balance_exist; +} + diff --git a/split_service.h b/split_service.h new file mode 100644 index 0000000..5906c41 --- /dev/null +++ b/split_service.h @@ -0,0 +1,40 @@ +#include +#include "user.h" + +class SplitService +{ + /*** this map will contain all the user details with user id as key **/ + unordered_map user_table; + + /*** this table will contain all the expense details between users ***/ + float **expense_table; + + /*** this is a table of user ids with user seq no as index **********/ + vector users; + + int num_of_user; + + public: + SplitService(int no) + { + num_of_user = no; + expense_table = new float*[num_of_user]; + for (int i = 0; i table); + void EXPENSE_EXACT(int total, string payer, vector table, vector amount); + void EXPENSE_PERCENT(int total, string payer, vector table, vector amount); +}; + + diff --git a/user.h b/user.h new file mode 100644 index 0000000..765911d --- /dev/null +++ b/user.h @@ -0,0 +1,31 @@ +#include +#include +#include + +using namespace std; + +class User +{ + string user_id; + string email_id; + string mobile_no; + string name; + int seq_no; + public: + User(int s, string uid, string n, string email, string mob) + { + seq_no = s; + user_id = uid; + name = n; + email_id = email; + mobile_no = mob; + } + string get_user_id() + { + return user_id; + } + int get_seq() + { + return seq_no; + } +};