瀏覽代碼

added ex02 finished

bastien 5 月之前
父節點
當前提交
5b19321e01

+ 19 - 14
Module_00/ex01/srcs/main.cpp

@@ -6,18 +6,31 @@
 
 
 void	ft_search(Phonebook *Phonebook) {
-	int cpt;
+	int			cpt;
+	std::string	index;
 
 	cpt = 0;
 	std::cout << "     Index|First Nam.| Last Name|  Nickname" << std::endl;
 	while (cpt < Phonebook->nb) {
-		std::cout << std::setw(10) << cpt << "|"
-		  << std::setw(10) << Phonebook->contact[cpt].first_name.substr(0, 10) << "|"
-		  << std::setw(10) << Phonebook->contact[cpt].last_name.substr(0, 10) << "|"
-		  << std::setw(10) << Phonebook->contact[cpt].nickname.substr(0, 10)
-		  << std::endl;
+		std::cout << std::setw(10) << cpt << "|";
+		if (Phonebook->contact[cpt].first_name.length() > 10)
+			std::cout << std::setw(9) << Phonebook->contact[cpt].first_name.substr(0, 9) << ".|";
+		else
+			std::cout << std::setw(10) << Phonebook->contact[cpt].first_name << "|" ;
+		if (Phonebook->contact[cpt].last_name.length() > 10)
+			std::cout << std::setw(9) << Phonebook->contact[cpt].last_name.substr(0, 9) << ".|";
+		else
+			std::cout << std::setw(10) << Phonebook->contact[cpt].last_name << "|" ;
+		if (Phonebook->contact[cpt].nickname.length() > 10)
+			std::cout << std::setw(9) << Phonebook->contact[cpt].nickname.substr(0, 9) << ".|";
+		else
+			std::cout << std::setw(10) << Phonebook->contact[cpt].nickname << "|" ;
+		std::cout << std::endl;
 		cpt++;
 	}
+	std::cout << "which contact would you like to check ? (1-8) : "; std::getline(std::cin, index);
+	if (std::stoi(index) < 8)
+		Phonebook->contact[std::stoi(index)].getContact();
 }
 
 void	ft_add(Phonebook *Phonebook) {
@@ -33,14 +46,6 @@ void	ft_add(Phonebook *Phonebook) {
 	std::cout << "Enter Number : "; std::getline(std::cin, number);
 	std::cout << "Enter Secret : "; std::getline(std::cin, secret);
 
-	std::cout << "[DEBUG] first_name=" << first_name << std::endl;
-std::cout << "[DEBUG] last_name=" << last_name << std::endl;
-std::cout << "[DEBUG] nickname=" << nickname << std::endl;
-std::cout << "[DEBUG] number=" << number << std::endl;
-std::cout << "[DEBUG] secret=" << secret << std::endl;
-
-std::cout << "[DEBUG] Writing to contact index: " << (Phonebook->cpt % 8) << std::endl;
-
 	Phonebook->contact[Phonebook->cpt % 8].setContact(secret, first_name, last_name, nickname, number);
 	Phonebook->cpt++;
 	Phonebook->nb = Phonebook->nb == 8 ? 8 : Phonebook->nb + 1;

二進制
Module_00/ex02/.Account.hpp.swp


+ 0 - 0
Module_00/19920104_091532.log → Module_00/ex02/19920104_091532.log


+ 0 - 0
Module_00/Account.hpp → Module_00/ex02/Account.hpp


+ 50 - 0
Module_00/ex02/Makefile

@@ -0,0 +1,50 @@
+#******************************************************************************#
+#                                                                              #
+#                                                         :::      ::::::::    #
+#    Makefile                                           :+:      :+:    :+:    #
+#                                                     +:+ +:+         +:+      #
+#    By: bchanot <bchanot@students.42.fr>           +#+  +:+       +#+         #
+#                                                 +#+#+#+#+#+   +#+            #
+#    Created: 2016/07/24 00:00:08 by bchanot           #+#    #+#              #
+#*   Updated: 2025/07/09 19:53:59 by bchanot          ###   ########.fr       *#
+#                                                                              #
+#******************************************************************************#
+
+NAME = ex00
+MAKE_LIBS = make --no-print-directory
+SRCS_DIR = srcs/
+OBJS_DIR = .objects/
+CC = g++ -Wall -Wextra -Werror -g
+INC = -I./includes
+FILES = main Account.class
+SRCS = $(FILES)
+OBJS = $(addprefix $(OBJS_DIR), $(addsuffix .o, $(SRCS)))
+RED = \033[1;31m
+BLUE = \033[1;34m
+CYAN = \033[0;36m
+GREEN = \033[1;32m
+YELLOW = \033[1;33m
+EOC = \033[0m
+
+all: $(NAME)
+
+$(NAME): $(OBJS)
+	@echo -e "$(GREEN)Objects created.$(EOC)"
+	@$(CC) $(OBJS) $(INC) -o $(NAME)
+	@echo -e "$(GREEN)Compilation complete.$(EOC)"
+
+$(OBJS_DIR)%.o: $(SRCS_DIR)%.cpp
+	@mkdir -p $(dir $@)
+	$(CC) -c $< $(INC) -o $@
+
+clean:
+	@echo -e "$(RED)Deleting objects.$(EOC)"
+	@/bin/rm -rf $(OBJS_DIR)
+
+fclean: clean
+	@echo -e "$(RED)Deleting binary.$(EOC)"
+	@/bin/rm -rf $(NAME)
+
+re: fclean all
+
+.PHONY: all clean fclean re

+ 69 - 0
Module_00/ex02/includes/Account.class.hpp

@@ -0,0 +1,69 @@
+// ************************************************************************** //
+//                                                                            //
+//                Account.hpp for GlobalBanksters United                //
+//                Created on  : Thu Nov 20 19:43:15 1989                      //
+//                Last update : Wed Jan 04 14:54:06 1992                      //
+//                Made by : Brad "Buddy" McLane <bm@gbu.com>                  //
+//                                                                            //
+// ************************************************************************** //
+
+
+#pragma once
+#ifndef __ACCOUNT_H__
+#define __ACCOUNT_H__
+
+// ************************************************************************** //
+//                               Account Class                                //
+// ************************************************************************** //
+
+class Account {
+
+
+public:
+
+	typedef Account		t;
+
+	static int	getNbAccounts( void );
+	static int	getTotalAmount( void );
+	static int	getNbDeposits( void );
+	static int	getNbWithdrawals( void );
+	static void	displayAccountsInfos( void );
+
+	Account( int initial_deposit );
+	~Account( void );
+
+	void	makeDeposit( int deposit );
+	bool	makeWithdrawal( int withdrawal );
+	int		checkAmount( void ) const;
+	void	displayStatus( void ) const;
+
+
+private:
+
+	static int	_nbAccounts;
+	static int	_totalAmount;
+	static int	_totalNbDeposits;
+	static int	_totalNbWithdrawals;
+
+	static void	_displayTimestamp( void );
+
+	int				_accountIndex;
+	int				_amount;
+	int				_nbDeposits;
+	int				_nbWithdrawals;
+
+	Account( void );
+
+};
+
+
+
+// ************************************************************************** //
+// vim: set ts=4 sw=4 tw=80 noexpandtab:                                      //
+// -*- indent-tabs-mode:t;                                                   -*-
+// -*- mode: c++-mode;                                                       -*-
+// -*- fill-column: 75; comment-column: 75;                                  -*-
+// ************************************************************************** //
+
+
+#endif /* __ACCOUNT_H__ */

+ 119 - 0
Module_00/ex02/srcs/Account.class.cpp

@@ -0,0 +1,119 @@
+/* ************************************************************************** */
+/*                                                                            */
+/*                                                        :::      ::::::::   */
+/*   Account.class.cpp                                  :+:      :+:    :+:   */
+/*                                                    +:+ +:+         +:+     */
+/*   By: bchanot <bchanot@gmail.fr>                 +#+  +:+       +#+        */
+/*                                                +#+#+#+#+#+   +#+           */
+/*   Created: 2025/07/09 15:55:31 by bchanot           #+#    #+#             */
+/*   Updated: 2025/07/09 20:42:20 by bchanot          ###   ########.fr       */
+/*                                                                            */
+/* ************************************************************************** */
+
+#include "Account.class.hpp"
+#include <iostream>
+#include <iomanip>
+#include <ctime>
+
+Account::Account(int initial_deposit) : _amount(initial_deposit) {
+	Account::_totalAmount += initial_deposit;
+	Account::_displayTimestamp();
+	this->_accountIndex = Account::_nbAccounts;
+	Account::_nbAccounts += 1;
+	std::cout << "index:" << this->_accountIndex << ";";
+	std::cout << "amount:" << this->_amount << ";";
+	std::cout << "created" << std::endl;
+	return ;
+}
+
+Account::~Account(void) {
+	Account::_displayTimestamp();
+	std::cout << "index:" << this->_accountIndex << ";";
+	std::cout << "amount:" << this->_amount << ";";
+	std::cout << "closed" << std::endl;
+	return ;
+}
+
+int	Account::getNbAccounts( void ) {
+	return Account::_nbAccounts;
+}
+
+
+int	Account::getTotalAmount( void ) {
+	return Account::_totalAmount;
+}
+
+int	Account::getNbDeposits( void ) {
+	return Account::_totalNbDeposits;
+}
+
+int	Account::getNbWithdrawals( void ) {
+	return Account::_totalNbWithdrawals;
+}
+
+void	Account::displayAccountsInfos( void ) {
+	Account::_displayTimestamp();
+	std::cout << "accounts:" << Account::_nbAccounts << ";";
+	std::cout << "total:" << Account::_totalAmount << ";";
+	std::cout << "deposits:" << Account::_totalNbDeposits << ";";
+	std::cout << "withdrawals:" << Account::_totalNbWithdrawals << ";";
+	std::cout << std::endl;
+}
+
+void	Account::makeDeposit( int deposit ) {
+	Account::_displayTimestamp();
+	std::cout << "index:" << this->_accountIndex << ";";
+	std::cout << "p_amount:" << this->_amount << ";";
+	this->_amount += deposit;
+	Account::_totalAmount += deposit;
+	this->_nbDeposits = Account::_totalNbDeposits += 1;
+	std::cout << "deposit:" << deposit << ";";
+	std::cout << "amount:" << this->_amount << ";";
+	std::cout << "nb_deposits:" << this->_nbDeposits << ";";
+	std::cout << std::endl;
+	return ;
+}
+
+bool	Account::makeWithdrawal( int withdrawal ) {
+	Account::_displayTimestamp();
+	std::cout << "index:" << this->_accountIndex << ";";
+	std::cout << "p_amount:" << this->_amount << ";";
+	if (this->_amount < withdrawal) {
+		std::cout << "withdrawal:refused" << std::endl;
+		return false;
+	}
+	this->_amount -= withdrawal;
+	Account::_totalAmount -= withdrawal;
+	this->_nbWithdrawals = Account::_totalNbWithdrawals += 1;
+	std::cout << "withdrawal:" << withdrawal << ";";
+	std::cout << "amount:" << this->_amount << ";";
+	std::cout << "nb_withdrawals:" << this->_nbWithdrawals << ";";
+	std::cout << std::endl;
+	return true;
+}
+
+int		Account::checkAmount( void ) const {
+	return this->_amount;
+}
+
+void	Account::displayStatus( void ) const {
+	Account::_displayTimestamp();
+	std::cout << "index:" << this->_accountIndex << ";";
+	std::cout << "amount:" << this->_amount << ";";
+	std::cout << "deposits:" << this->_nbDeposits << ";";
+	std::cout << "withdrawals:" << this->_nbWithdrawals << ";";
+	std::cout << std::endl;
+}
+
+
+void	Account::_displayTimestamp( void ) {
+	std::time_t now = std::time(nullptr);
+	std::tm* tm_now = std::localtime(&now);
+
+	std::cout << "[" << std::put_time(tm_now, "%Y%m%d_%H%M%S") << "] ";
+}
+
+int	Account::_nbAccounts = 0;
+int Account::_totalAmount = 0;
+int	Account::_totalNbDeposits = 0;
+int	Account::_totalNbWithdrawals = 0;

+ 72 - 0
Module_00/ex02/srcs/main.cpp

@@ -0,0 +1,72 @@
+// ************************************************************************** //
+//                                                                            //
+//                tests.cpp for GlobalBanksters United                        //
+//                Created on  : Thu Nov 20 23:45:02 1989                      //
+//                Last update : Wed Jan 04 09:23:52 1992                      //
+//                Made by : Brad "Buddy" McLane <bm@gbu.com>                  //
+//                                                                            //
+// ************************************************************************** //
+
+#include <vector>
+#include <algorithm>
+#include <functional>
+#include "Account.class.hpp"
+
+
+int		main( void ) {
+
+	typedef std::vector<Account::t>							  accounts_t;
+	typedef std::vector<int>								  ints_t;
+	typedef std::pair<accounts_t::iterator, ints_t::iterator> acc_int_t;
+
+	int	const				amounts[]	= { 42, 54, 957, 432, 1234, 0, 754, 16576 };
+	size_t const			amounts_size( sizeof(amounts) / sizeof(int) );
+	accounts_t				accounts( amounts, amounts + amounts_size );
+	accounts_t::iterator	acc_begin	= accounts.begin();
+	accounts_t::iterator	acc_end		= accounts.end();
+
+	int	const			d[]			= { 5, 765, 564, 2, 87, 23, 9, 20 };
+	size_t const		d_size( sizeof(d) / sizeof(int) );
+	ints_t				deposits( d, d + d_size );
+	ints_t::iterator	dep_begin	= deposits.begin();
+	ints_t::iterator	dep_end		= deposits.end();
+
+	int	const			w[]			= { 321, 34, 657, 4, 76, 275, 657, 7654 };
+	size_t const		w_size( sizeof(w) / sizeof(int) );
+	ints_t				withdrawals( w, w + w_size );
+	ints_t::iterator	wit_begin	= withdrawals.begin();
+	ints_t::iterator	wit_end		= withdrawals.end();
+
+	Account::displayAccountsInfos();
+	std::for_each( acc_begin, acc_end, std::mem_fn( &Account::displayStatus ) );
+
+	for ( acc_int_t it( acc_begin, dep_begin );
+		  it.first != acc_end && it.second != dep_end;
+		  ++(it.first), ++(it.second) ) {
+
+		(*(it.first)).makeDeposit( *(it.second) );
+	}
+
+	Account::displayAccountsInfos();
+	std::for_each( acc_begin, acc_end, std::mem_fn( &Account::displayStatus ) );
+
+	for ( acc_int_t it( acc_begin, wit_begin );
+		  it.first != acc_end && it.second != wit_end;
+		  ++(it.first), ++(it.second) ) {
+
+		(*(it.first)).makeWithdrawal( *(it.second) );
+	}
+
+	Account::displayAccountsInfos();
+	std::for_each( acc_begin, acc_end, std::mem_fn( &Account::displayStatus ) );
+
+	return 0;
+}
+
+
+// ************************************************************************** //
+// vim: set ts=4 sw=4 tw=80 noexpandtab:                                      //
+// -*- indent-tabs-mode:t;                                                   -*-
+// -*- mode: c++-mode;                                                       -*-
+// -*- fill-column: 75; comment-column: 75;                                  -*-
+// ************************************************************************** //

+ 0 - 0
Module_00/tests.cpp → Module_00/ex02/tests.cpp