diff --git a/cpp00/ex01/Makefile b/cpp00/ex01/Makefile index f256fbf..9232381 100644 --- a/cpp00/ex01/Makefile +++ b/cpp00/ex01/Makefile @@ -6,7 +6,7 @@ # By: rparodi +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2023/11/12 11:05:05 by rparodi #+# #+# # -# Updated: 2024/10/18 17:46:21 by rparodi ### ########.fr # +# Updated: 2024/10/21 15:58:19 by rparodi ### ########.fr # # # # **************************************************************************** # diff --git a/cpp00/ex01/includes/phonebook.hpp b/cpp00/ex01/includes/phonebook.hpp index c351556..3f54b92 100644 --- a/cpp00/ex01/includes/phonebook.hpp +++ b/cpp00/ex01/includes/phonebook.hpp @@ -6,7 +6,7 @@ /* By: rparodi +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/10/17 14:56:49 by rparodi #+# #+# */ -/* Updated: 2024/10/20 21:29:16 by rparodi ### ########.fr */ +/* Updated: 2024/10/22 14:06:11 by rparodi ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,7 +16,6 @@ #include #include #include -#include #include #include #include "color.hpp" @@ -28,13 +27,17 @@ std::string get_input(const char *err_msg, std::string file, int line); class Contact { public: - /*Contact();*/ - /*~Contact();*/ - bool init_new(int id); + Contact(); + ~Contact(); + void init_new(int id); void print_all(); void print(); + bool getUsed(); + void setUsed(); + void clear(); private: std::string _get_number(const char *err_msg, std::string file, int line); + bool _used; int _id; std::string _first_name; std::string _last_name; @@ -46,12 +49,13 @@ class Contact class PhoneBook { public: + PhoneBook(); + ~PhoneBook(); void add(int id); Contact array_contact[8]; - void search(int max); + void search(); private: void searching_header(); }; - #endif diff --git a/cpp00/ex01/sources/contact.cpp b/cpp00/ex01/sources/contact.cpp index f2106e8..852b235 100644 --- a/cpp00/ex01/sources/contact.cpp +++ b/cpp00/ex01/sources/contact.cpp @@ -6,12 +6,44 @@ /* By: rparodi +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/10/18 17:42:58 by rparodi #+# #+# */ -/* Updated: 2024/10/20 21:31:16 by rparodi ### ########.fr */ +/* Updated: 2024/10/22 14:05:15 by rparodi ### ########.fr */ /* */ /* ************************************************************************** */ #include "phonebook.hpp" +Contact::Contact() +{ + _used = false; + _id = 0; + _first_name = ""; + _last_name = ""; + _nickname = ""; + _number = ""; + _secret = ""; +} + +Contact::~Contact() +{ + return; +} + +bool Contact::getUsed() +{ + return _used; +} + +void Contact::clear() +{ + _used = false; + _id = 0; + _first_name = ""; + _last_name = ""; + _nickname = ""; + _number = ""; + _secret = ""; +} + std::string Contact::_get_number(const char *err_msg, std::string file, int line) { std::string to_ret = get_input(err_msg, file, line); @@ -24,26 +56,41 @@ std::string Contact::_get_number(const char *err_msg, std::string file, int line return to_ret; } -bool Contact::init_new(int id) +void Contact::init_new(int id) { _id = id; - std::cout << "First Name:\t"; - _first_name = get_input("first_name", __FILE_NAME__, __LINE__); - std::cout << "Last Name:\t"; - _last_name = get_input("last_name", __FILE_NAME__, __LINE__); - std::cout << "Nickname:\t"; - _nickname = get_input("nickname", __FILE_NAME__, __LINE__); - std::cout << "Number:\t\t"; - _number = _get_number("number", __FILE_NAME__, __LINE__); - if (_number.empty()) - return false; - std::cout << "Secret:\t\t"; - _secret = get_input("secret", __FILE_NAME__, __LINE__); - return true; + _used = true; + while (_first_name.empty() == true) + { + std::cout << "First Name:\t"; + _first_name = get_input("first_name", __FILE_NAME__, __LINE__); + } + while (_last_name.empty() == true) + { + std::cout << "Last Name:\t"; + _last_name = get_input("last_name", __FILE_NAME__, __LINE__); + } + while (_nickname.empty() == true) + { + std::cout << "Nickname:\t"; + _nickname = get_input("nickname", __FILE_NAME__, __LINE__); + } + while (_number.empty() == true) + { + std::cout << "Number:\t\t"; + _number = _get_number("number", __FILE_NAME__, __LINE__); + } + while (_secret.empty() == true) + { + std::cout << "Secret:\t\t"; + _secret = get_input("secret", __FILE_NAME__, __LINE__); + } } void Contact::print() { + if (!_used) return; + std::cout << CLR_GREY << "|" << CLR_RESET << std::setw(10) << _id; if (_first_name.length() > 10) std::cout << CLR_GREY << "|" << CLR_RESET << std::setw(9) << _first_name.substr(0, 9) << "."; diff --git a/cpp00/ex01/sources/main.cpp b/cpp00/ex01/sources/main.cpp index 8e858ab..5ab7d26 100644 --- a/cpp00/ex01/sources/main.cpp +++ b/cpp00/ex01/sources/main.cpp @@ -6,7 +6,7 @@ /* By: rparodi +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/10/17 14:55:18 by rparodi #+# #+# */ -/* Updated: 2024/10/20 21:38:07 by rparodi ### ########.fr */ +/* Updated: 2024/10/22 14:05:46 by rparodi ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,14 +26,14 @@ std::string get_input(const char *err_msg, std::string file, int line) { if (!std::getline(std::cin, input)) throw std::runtime_error("getline can't read the input !\n"); - else if (input.empty()) - throw std::runtime_error("The input can't be empty !\n"); } catch (const std::exception& err) { std::cerr << CLR_BOLD_RED << "\nError:\t" << err.what() << CLR_RESET << CLR_RED << "(" << err_msg << " [" << file << ":" << line << "]" << ")" << CLR_RESET << std::endl; exit(1); } + if (input.empty() == true) + return ""; return (input); } @@ -47,14 +47,16 @@ int main() { std::cout << MENU << std::endl; input = get_input("Main menu", __FILE_NAME__, __LINE__); - if (strcmp(input.c_str(), "ADD") == 0) + if (input == "ADD") { - if (phonebook.array_contact[i].init_new(i) == true) - i++; + if (phonebook.array_contact[i].getUsed() == true) + phonebook.array_contact[i].clear(); + phonebook.array_contact[i].init_new(i); + i = (i + 1) % 8; } - if (strcmp(input.c_str(), "SEARCH") == 0) - phonebook.search(i); - if (strcmp(input.c_str(), "EXIT") == 0) + if (input == "SEARCH") + phonebook.search(); + if (input == "EXIT") { std::cout << CLR_LIGHT_RED << "Leaving the program..." << CLR_RESET << std::endl; exit(1); diff --git a/cpp00/ex01/sources/phonebook.cpp b/cpp00/ex01/sources/phonebook.cpp index 17dbe5c..9387a2b 100644 --- a/cpp00/ex01/sources/phonebook.cpp +++ b/cpp00/ex01/sources/phonebook.cpp @@ -6,13 +6,22 @@ /* By: rparodi +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/10/17 15:09:21 by rparodi #+# #+# */ -/* Updated: 2024/10/20 21:34:27 by rparodi ### ########.fr */ +/* Updated: 2024/10/21 17:13:54 by rparodi ### ########.fr */ /* */ /* ************************************************************************** */ #include "phonebook.hpp" -#include "color.hpp" -#include + +PhoneBook::PhoneBook() +{ + for (int i = 0; i < 8; i++) + array_contact[i] = Contact(); +} + +PhoneBook::~PhoneBook() +{ + return; +} void PhoneBook::searching_header() { @@ -22,20 +31,20 @@ void PhoneBook::searching_header() std::cout << CLR_GREY << "|" << CLR_GOLD << std::setw(10)<< "Nickname" << CLR_RESET; std::cout << CLR_GREY << "|" << CLR_RESET << std::endl; } -void PhoneBook::search(int max) +void PhoneBook::search() { unsigned long long chosen; - if (max == 0) + if (!array_contact[0].getUsed()) { std::cout << CLR_RED << "\nError:\t Don't have any contact to search in (" << __FILE_NAME__ << ":" << __LINE__ << ")\n" << std::endl; return; } searching_header(); - for (int i = 0; i < max; i++) + for (int i = 0; i < 8; i++) array_contact[i].print(); std::cout << "\nGive me the contact on which you want more information:" << std::endl; chosen = atoll(get_input("Search selection", __FILE_NAME__, __LINE__).c_str()); - if (chosen >= 0 && chosen < (unsigned long long) max) + if (chosen >= 0 && chosen < 8 && array_contact[chosen].getUsed()) array_contact[chosen].print_all(); else {