Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

C++ Hashing Problem Database file: Superhero Database https://raw.githubusercont

ID: 3731791 • Letter: C

Question

C++ Hashing Problem

Database file: Superhero Database

https://raw.githubusercontent.com/irawoodring/263/master/assignments/marvel-wikia-data.csv

For this project you are tasked with creating a hashmap class. It can be generic if you like (probably easier to write it that way), or you can write it specifically to house objects of type Superhero .A Superhero has the following fields int page_id; std::string name; std::string urlslug; std::string id; std::string alignment: char eye_color; char hair_color; char sex; std::string gsm; boolean alive; int appearances; std::string first appearance; int year; As per object oriented best practices all fields should be private Your hashmap class should hash based on the entire name of the superhero. You will use the separate chaining method to handle collisions (each array indice will correspond to a vector object where the data will be stored). Your hashmap will provide only the following public methods boolean insert (const Superhero & s); Superhero & get(const std::string name); The insert function returns either true or false depending on whether a collision occurred on insert. Regardless of whether a collision occurred or not the object should be inserted in the vector. Additionally, as we discussed in class, the object should be added to the front of the vector.

Explanation / Answer

main.cpp

#include <vector>

#include <fstream>

#include <string>

#include <iostream>

#include <sstream>

#include "Superhero.h"

int main(int argc, char** argv){

std::ifstream in{"marvel-wikia-data.csv"};

std::vector<Superhero>* heroDB = new std::vector<Superhero>;

if(not in){

std::perror("File Error");

return 0;

}

std::string input;

  

//Get rid of the first line

std::getline(in,input);

while(std::getline(in,input)){

  

std::string params[13];

std::stringstream data(input);

  

for(int i(0); i < 13; i++)

std::getline(data, params[i], ',');

  

int page_id = std::stoi(params[0]);

const std::string name(params[1]);

const std::string urlslug(params[2]);

const std::string id(params[3]);

const std::string alignment(params[4]);

char eye_color('V');

if(!params[5].empty())

eye_color = params[5].at(0);

char hair_color('V');

if(!params[6].empty())

hair_color = params[6].at(0);

  

char sex('U');

if(!params[7].empty())

sex = params[7].at(0);

const std::string gsm(params[8]);

int appearances(1);

if(!params[10].empty())

appearances = std::stoi(params[10]);

  

const std::string first_apperance(params[11]);

int year(0);

if(!params[12].empty())

year = std::stoi(params[12]);

bool alive(true);

if(params[9].at(0) == 'D')

alive = false;

Superhero hero(page_id, name, urlslug, id, alignment, eye_color,

hair_color, sex, gsm, alive, appearances, first_apperance, year);

heroDB->push_back(hero);

}

for(auto hero_it(heroDB->begin()); hero_it < heroDB->end(); hero_it++){

Superhero output(*hero_it);

std::cout << output.toString() << std::endl;

}

  

}

Superhero.cpp

#include <string>

#include <sstream>

#include "Superhero.h"

Superhero::Superhero(int page_id, const std::string &name, const std::string &urlslug, const std::string &id,

const std::string &alignment, char eye_color, char hair_color, char sex, const std::string &gsm,

bool alive, int appearances, const std::string &first_apperance, int year) :

page_id(page_id), name(name),urlslug(urlslug), id(id), alignment(alignment), eye_color(eye_color),

hair_color(hair_color), sex(sex), gsm(gsm), alive(alive), appearances(appearances), first_apperance(first_apperance),

year(year) {}

std::string Superhero:: toString(){

return name;

}

//void Superhero::setPageID(int &page_id){

// Superhero::page_id = page_id;

//}

//

//int Superhero::getPageID() const{

// return page_id;

//}

//void Superhero::setName(std::string &name){

// Superhero::name = name;

//}

//

//std::string Superhero::getName() const{

// return name;

//}

//

//void Superhero::setUrlSlug(std::string &urlslug){

// Superhero::urlslug = urlslug;

//}

//

//std::string Superhero::getUrlSlug() const{

// return urlslug;

//}

//

//void Superhero::setID(std::string &id){

// Superhero::id = id;

//}

//

//std::string Superhero::getID() const{

// return id;

//}

//

//void Superhero::setAlighment(std::string &alignment){

// Superhero::alignment = alignment;

//}

//

//std::string Superhero::getAlignment() const{

// return alignment;

//}

//

//void Superhero::setEyeColor(char &eye_color){

// Superhero::eye_color = eye_color;

//}

//

//char Superhero::getEyeColor() const{

// return eye_color;

//}

//

//void Superhero::getHairColor(char &hair_color){

// Superhero::hair_color = hair_color;

//}

//

//char Superhero::getHairColor() const{

// return hair_color;

//}

//

//void Superhero::setSex(char &sex){

// Superhero::sex = sex;

//}

//

//char Superhero::getSex() const{

// return sex;

//}

//

//void Superhero::setGSM(std::string &gsm){

// Superhero::gsm = gsm;

//}

Superhero.h

#ifndef __H_SUPERHERO_

#define __H_SUPERHERO_

#include <string>

class Superhero{

public:

Superhero(int page_id, const std::string &name, const std::string &urlslug, const std::string &id,

const std::string &alignment, char eye_color, char hair_color, char sex, const std::string &gsm,

bool alive, int appearances, const std::string &first_apperance, int year);  

std::string toString();

// void setPageID(int &page_id);

// int getPageID() const;

// void setName(std::string &name);

// std::string getName() const;

// void setUrlSlug(std::string &urlslug);

// std::string getUrlslug() const;

// void setID(std::string &id);

// std::string getID() const;

// void setAlignment(std::string &alignment);

// std::string getAlignment() const;

// void setEyeColor(char &eye_color);

// char getEyeColor() const;

// void setHairColor(char &hair_color);

// char getHairColor() const;

// void setSex(char &sex);

// char getSex() const; //should this be changed to be less dirty?

// void setGSM(std::string &gsm);

// std::string getGSM() const;

// void setAlive(bool &alive);

// bool getAlive() const;

// void setApperances(int &appearances);

// int getApperances() const;

// void setFirstApperance(std::string &first_apperance);

// std::string getFristApperance() const;

// void setYear(int &year);

// int getYear() const;

private:

int page_id;

std::string name;

std::string urlslug;

std::string id;

std::string alignment;

char eye_color;

char hair_color;

char sex;

std::string gsm;

bool alive;

int appearances;

std::string first_apperance;

int year;

};

#endif

one.text

page_id,name,urlslug,ID,ALIGN,EYE,HAIR,SEX,GSM,ALIVE,APPEARANCES,FIRST APPEARANCE,Year

1678,Spider-Man (Peter Parker),/Spider-Man_(Peter_Parker),Secret Identity,Good Characters,Hazel Eyes,Brown Hair,Male Characters,,Living Characters,4043,Aug-62,1962

7139,Captain America (Steven Rogers),/Captain_America_(Steven_Rogers),Public Identity,Good Characters,Blue Eyes,White Hair,Male Characters,,Living Characters,3360,Mar-41,1941

64786,"Wolverine (James ""Logan"" Howlett)",/Wolverine_(James_%22Logan%22_Howlett),Public Identity,Neutral Characters,Blue Eyes,Black Hair,Male Characters,,Living Characters,3061,Oct-74,1974

1868,"Iron Man (Anthony ""Tony"" Stark)",/Iron_Man_(Anthony_%22Tony%22_Stark),Public Identity,Good Characters,Blue Eyes,Black Hair,Male Characters,,Living Characters,2961,Mar-63,1963

2460,Thor (Thor Odinson),/Thor_(Thor_Odinson),No Dual Identity,Good Characters,Blue Eyes,Blond Hair,Male Characters,,Living Characters,2258,Nov-50,1950

2458,Benjamin Grimm (Earth-616),/Benjamin_Grimm_(Earth-616),Public Identity,Good Characters,Blue Eyes,No Hair,Male Characters,,Living Characters,2255,Nov-61,1961

2166,Reed Richards (Earth-616),/Reed_Richards_(Earth-616),Public Identity,Good Characters,Brown Eyes,Brown Hair,Male Characters,,Living Characters,2072,Nov-61,1961

1833,Hulk (Robert Bruce Banner),/Hulk_(Robert_Bruce_Banner),Public Identity,Good Characters,Brown Eyes,Brown Hair,Male Characters,,Living Characters,2017,May-62,1962

29481,Scott Summers (Earth-616),/Scott_Summers_(Earth-616),Public Identity,Neutral Characters,Brown Eyes,Brown Hair,Male Characters,,Living Characters,1955,Sep-63,1963

1837,Jonathan Storm (Earth-616),/Jonathan_Storm_(Earth-616),Public Identity,Good Characters,Blue Eyes,Blond Hair,Male Characters,,Living Characters,1934,Nov-61,1961

15725,Henry McCoy (Earth-616),/Henry_McCoy_(Earth-616),Public Identity,Good Characters,Blue Eyes,Blue Hair,Male Characters,,Living Characters,1825,Sep-63,1963

1863,Susan Storm (Earth-616),/Susan_Storm_(Earth-616),Public Identity,Good Characters,Blue Eyes,Blond Hair,Female Characters,,Living Characters,1713,Nov-61,1961

7823,Namor McKenzie (Earth-616),/Namor_McKenzie_(Earth-616),No Dual Identity,Neutral Characters,Green Eyes,Black Hair,Male Characters,,Living Characters,1528,,

2614,Ororo Munroe (Earth-616),/Ororo_Munroe_(Earth-616),Public Identity,Good Characters,Blue Eyes,White Hair,Female Characters,,Living Characters,1512,May-75,1975

1803,Clinton Barton (Earth-616),/Clinton_Barton_(Earth-616),Public Identity,Good Characters,Blue Eyes,Blond Hair,Male Characters,,Living Characters,1394,Sep-64,1964

1396,Matthew Murdock (Earth-616),/Matthew_Murdock_(Earth-616),Public Identity,Good Characters,Blue Eyes,Red Hair,Male Characters,,Living Characters,1338,Apr-64,1964

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote