Volatile_Pulse

Entering/Searching members

Jul 25th, 2012
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.35 KB | None | 0 0
  1. // Needed to search case insensitive strings
  2. #include <boost/algorithm/string/predicate.hpp>
  3. #include <iostream>
  4. #include <vector>
  5. #include <string>
  6. #include <map>
  7.  
  8. int main() {
  9.    // mMembersList contains Key:String, Value:Contact
  10.    // For all intensive purposes, Value is not important here
  11.    std::map<std::string, int> mMembersList;
  12.    // mMembersList is populated from a file, since file isn't available
  13.    // Create basic map with random keys:value
  14.    mMembersList.insert(std::pair<std::string,int> ("Bob Jordan",2));
  15.    mMembersList.insert(std::pair<std::string,int> ("George Jeremy",2));
  16.    mMembersList.insert(std::pair<std::string,int> ("Donald Richardson",3));
  17.    mMembersList.insert(std::pair<std::string,int> ("Robert Newman",8));
  18.    mMembersList.insert(std::pair<std::string,int> ("John Doe",20));
  19.    mMembersList.insert(std::pair<std::string,int> ("Richard Stevenson",12));
  20.    mMembersList.insert(std::pair<std::string,int> ("Steve Davidson",1));
  21.  
  22.    // Display members in list
  23.    std::cout << "Members:\n";
  24.    for (auto it : mMembersList)
  25.       std::cout << "\t" << it.first << "\n";
  26.  
  27.    //mPersonalResults contains Key:String, Value:Vector<Float>
  28.    std::map<std::string, std::vector<float>> mPersonalResults;
  29.    // mMembersList is populated from a file, since file isn't available
  30.    // Create basic map with random keys:value
  31.    mPersonalResults.insert(std::pair<std::string, std::vector<float>> ("Bob Jordan", {12.2,15.1,20.0,25}));
  32.    mPersonalResults.insert(std::pair<std::string, std::vector<float>> ("Donald Richardson", {14.8,10.2,8.9,13.3,21.3}));
  33.    mPersonalResults.insert(std::pair<std::string, std::vector<float>> ("John Doe", {11.7,14.6}));
  34.  
  35.    // Display members already entered
  36.    std::cout << "\nMembers that already completed event:\n";
  37.    for (auto it : mPersonalResults)
  38.       std::cout << "\t" << it.first << "\n";
  39.  
  40.    // Create a strSearch used to find any valid keys in mMembersList
  41.    std::string strSearch;
  42.    std::cout << "\nPlease enter a name to search for: ";
  43.    getline(std::cin, strSearch);
  44.  
  45.    // Create a vector to store found names
  46.    std::vector<std::string> vFoundNames;
  47.    // Search mMembersList
  48.    for (auto member : mMembersList)
  49.       // If a member matched the search
  50.       if (boost::algorithm::icontains(member.first, strSearch))
  51.          // Make sure member doesn't exist in mPersonalResults
  52.          if (mPersonalResults.find(member.first) == mPersonalResults.end())
  53.             // Add unused members to vFoundNames
  54.             vFoundNames.push_back(member.first);
  55.  
  56.    // Used to store which member to select
  57.    int iMember;
  58.  
  59.    // If more than one name was found
  60.    if (vFoundNames.size() > 1) {
  61.       // Display vFoundNames
  62.       for (unsigned int i = 0; i < vFoundNames.size(); i ++)
  63.          std::cout << i + 1 << ") " << vFoundNames[i] << "\n";
  64.  
  65.       // Let used select name they want
  66.       std::cin >> iMember;
  67.    }
  68.    // Otherwise, automatically select the only member
  69.    else
  70.       iMember = 1;
  71.  
  72.    // Create vector to hold fish's weight
  73.    std::vector<float> vFishWeight;
  74.  
  75.    // Notify user to enter weights for the member they selected, or only member
  76.    std::cout << "Enter Weights for " << vFoundNames[iMember - 1] << ":\n";
  77.    // Allow up to 5 fish's weight to be entered
  78.    for (int i = 0; i < 5; i ++) {
  79.       // Enter total weight first
  80.       if (i == 0)
  81.          std::cout << "\tEnter total weight: ";
  82.       // Enter largest fish after
  83.       else
  84.          // Notify the user which fish they're entering weights for
  85.          std::cout << "\tLargest Fish " << i << ": ";
  86.       // Create a temporary variable to store the fish's weight
  87.       float fFishWeight;
  88.       // Have the user enter the weight
  89.       std::cin >> fFishWeight;
  90.  
  91.       // If the weight was 0 or less
  92.       if (fFishWeight <= 0)
  93.          // Break the loop since it's not a valid weight
  94.          break;
  95.       // Add the weight to the vector
  96.       vFishWeight.push_back(fFishWeight);
  97.    }
  98.  
  99.    // Add member and fish weights to mPersonResults
  100.    mPersonalResults.insert(std::pair<std::string, std::vector<float>> (vFoundNames[iMember - 1], vFishWeight));
  101.  
  102.    // Display mPersonal Results
  103.    for (auto it : mPersonalResults) {
  104.       // Display Key
  105.       std::cout << "\n" << it.first << ":\n";
  106.       // Display each fish's weight
  107.       for (auto it2 : it.second)
  108.          std::cout << "\t" << it2;
  109.    }
  110. }
Advertisement
Add Comment
Please, Sign In to add comment