PPL Assignment
IRM2015006
q2.cpp
Go to the documentation of this file.
1 
2 /* allocate boyfriends to all girls in same order as given in input
3  */
4 
5 #include "../boys/boy.h"
6 #include "../girls/girl.h"
7 #include "../gifts/gift.h"
8 #include "../couples/couple.h"
9 #include "../utils/read_data.h"
10 #include "../utils/couple_utils.h"
11 #include "../utils/logger/logger.h"
12 
13 #include "../configs.h"
14 
15 
16 int main(int argc, char **argv)
17 {
18  int k = K;
19  if (argc >= 2)
20  k = atoi(argv[1]);
21  Logger logger(LOG_FILE);
22 
23  std::vector<Boy> boys = readAllBoys(BOY_FILE);
24  std::vector<Girl> girls = readAllGirls(GIRL_FILE);
25  std::vector<Gift> gifts = readAllGifts(GIFT_FILE);
26 
27  logger.info("Processing for question 2", true);
28  logger.log("boys", std::to_string(boys.size()) + " record read");
29  logger.log("girls", std::to_string(girls.size()) + " record read");
30  logger.log("gifts", std::to_string(gifts.size()) + " record read");
31 
32  std::vector<Couple> couples = makeCouples(&boys, &girls, &logger);
33 
34  logger.log("couples", std::to_string(couples.size()) + " formed");
35 
36  if (k > (int)couples.size()) {
37  logger.log("Error", "K is more than couples", true);
38  return 1;
39  }
40 
41  std::vector<Couple> hc = getKHappiestCouples(couples, k);
42  logger.info(std::to_string(k)+ " happiest Couples list", true);
43  for (int i = 0; i < (int)hc.size(); i++)
44  logger.log("couple"+std::to_string(i+1),
45  hc[i].boy.name+" and "+hc[i].girl.name, true);
46 
47  std::vector<Couple> cc = getKCompatibleCouples(couples, k);
48  logger.info(std::to_string(k) + " most compatible couples", true);
49  for (int i = 0; i < (int)cc.size(); i++)
50  logger.log("couple"+std::to_string(i+1),
51  cc[i].boy.name+" and "+cc[i].girl.name, true);
52 
53  return 0;
54 }
#define K
Definition: configs.h:14
std::vector< Gift > readAllGifts(std::string filename)
Definition: read_data.h:86
void info(const std::string msg, bool print=false)
Definition: logger.cpp:18
void log(const std::string type, const std::string msg, bool print=false)
Definition: logger.cpp:27
int main(int argc, char **argv)
Definition: q2.cpp:16
Definition: logger.h:8
std::vector< Couple > getKCompatibleCouples(std::vector< Couple > couples, int k)
Definition: couple_utils.h:157
#define BOY_FILE
Definition: configs.h:2
std::vector< Girl * > readAllGirls(std::string filename)
Definition: read_data.h:50
std::vector< Boy * > readAllBoys(std::string filename)
Definition: read_data.h:14
std::vector< Couple > getKHappiestCouples(std::vector< Couple > couples, int k)
Definition: couple_utils.h:147
#define LOG_FILE
Definition: configs.h:11
std::vector< Couple > makeCouples(int k, std::vector< Boy * >, std::vector< Girl * >, Logger *logger)
Definition: q10.cpp:51
#define GIFT_FILE
Definition: configs.h:8
#define GIRL_FILE
Definition: configs.h:5