feat(09): adding the parsing of the database
This commit is contained in:
parent
b2366d33e7
commit
b8fda23e86
1 changed files with 42 additions and 11 deletions
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: rparodi <rparodi@student.42.fr> +#+ +:+ +#+ */
|
/* By: rparodi <rparodi@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/04/08 12:15:32 by rparodi #+# #+# */
|
/* Created: 2025/04/08 12:15:32 by rparodi #+# #+# */
|
||||||
/* Updated: 2025/04/12 22:37:50 by rparodi ### ########.fr */
|
/* Updated: 2025/04/12 23:22:11 by rparodi ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -61,7 +61,23 @@ std::string error_code_to_string(enum error_code code) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void debug_print_map(const std::map<size_t, value>& data) {
|
void _debug_print_db(const std::map<std::string, float>& data) {
|
||||||
|
std::cout << std::endl << std::left
|
||||||
|
<< "\t " << CLR_YELLOW << "Value" << CLR_RESET
|
||||||
|
<< "\t" << CLR_YELLOW << "Date" << CLR_RESET
|
||||||
|
<< std::endl;
|
||||||
|
|
||||||
|
std::cout << CLR_BLUE << std::string(50, '-') << CLR_RESET << std::endl;
|
||||||
|
|
||||||
|
for (std::map<std::string, float>::const_iterator it = data.begin(); it != data.end(); ++it) {
|
||||||
|
std::cout << std::left
|
||||||
|
<< "\t " << CLR_GOLD << it->first << CLR_RESET
|
||||||
|
<< "\t" << CLR_GREEN << std::fixed << std::setprecision(2) << it->second << CLR_RESET
|
||||||
|
<< std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void _debug_print_input(const std::map<size_t, value>& data) {
|
||||||
std::cout << std::endl << std::left
|
std::cout << std::endl << std::left
|
||||||
<< "\t" << CLR_YELLOW << "Key" << CLR_RESET
|
<< "\t" << CLR_YELLOW << "Key" << CLR_RESET
|
||||||
<< "\t" << CLR_YELLOW << "Value" << CLR_RESET
|
<< "\t" << CLR_YELLOW << "Value" << CLR_RESET
|
||||||
|
|
@ -174,6 +190,7 @@ std::map<size_t, value>parse_input(std::string name) {
|
||||||
std::map<size_t, value> to_ret;
|
std::map<size_t, value> to_ret;
|
||||||
|
|
||||||
std::string tmpLine;
|
std::string tmpLine;
|
||||||
|
std::getline(file, tmpLine);
|
||||||
std::string tmpDate;
|
std::string tmpDate;
|
||||||
float tmpValue = 0;
|
float tmpValue = 0;
|
||||||
size_t line = 0;
|
size_t line = 0;
|
||||||
|
|
@ -196,18 +213,31 @@ std::map<size_t, value>parse_input(std::string name) {
|
||||||
return to_ret;
|
return to_ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::map<std::string, unsigned int > get_db() {
|
std::map<std::string, float> get_db() {
|
||||||
std::map<std::string, unsigned int> db;
|
enum error_code tmpError;
|
||||||
|
std::map<std::string, float> to_ret;
|
||||||
|
|
||||||
std::ifstream file("data.csv");
|
std::ifstream file("data.csv");
|
||||||
std::string line;
|
std::string tmpLine;
|
||||||
while (std::getline(file, line)) {
|
std::string tmpDate;
|
||||||
std::size_t limit = line.find(',');
|
std::getline(file, tmpLine);
|
||||||
|
float tmpValue = 0;
|
||||||
|
|
||||||
|
while (std::getline(file, tmpLine)) {
|
||||||
|
tmpDate.clear();
|
||||||
|
tmpValue = 0;
|
||||||
|
std::size_t limit = tmpLine.find(",");
|
||||||
|
|
||||||
if (limit != std::string::npos) {
|
if (limit != std::string::npos) {
|
||||||
db.insert(std::make_pair(line.substr(0, limit), atoi(line.substr(limit + 1).c_str())));
|
tmpDate = check_date(tmpLine.substr(0, limit), &tmpError);
|
||||||
|
tmpValue = check_value(tmpLine.substr(limit + 1).c_str(), &tmpError);
|
||||||
|
if (tmpError != NEGATIVE)
|
||||||
|
to_ret.insert(std::make_pair(tmpDate, tmpValue));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return db;
|
return to_ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
if (argc != 2) {
|
if (argc != 2) {
|
||||||
std::cerr << CLR_RED << "Usage: " << argv[0] << " <filename>" << CLR_RESET << std::endl;
|
std::cerr << CLR_RED << "Usage: " << argv[0] << " <filename>" << CLR_RESET << std::endl;
|
||||||
|
|
@ -230,6 +260,7 @@ int main(int argc, char *argv[]) {
|
||||||
exit( 1);
|
exit( 1);
|
||||||
}
|
}
|
||||||
std::map<size_t, value> user_db = parse_input(argv[1]);
|
std::map<size_t, value> user_db = parse_input(argv[1]);
|
||||||
get_db();
|
_debug_print_input(user_db);
|
||||||
debug_print_map(user_db);
|
std::map<std::string, float> value_db = get_db();
|
||||||
|
_debug_print_db(value_db);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue