[C++] CPP Module 00

J_JEON·2022년 11월 16일
0

CPP

목록 보기
1/9

CPP module 00

ex00

  • c 표준출력을 사용하지않고 cout을 활용해 문자열을 대문자로 출력
    ex)
$>./megaphone "shhhhh... I think the students are asleep..."
SHHHHH... I THINK THE STUDENTS ARE ASLEEP...
$>./megaphone Damnit " ! " "Sorry students, I thought this thing was off."
DAMNIT ! SORRY STUDENTS, I THOUGHT THIS THING WAS OFF.
$>./megaphone
* LOUD AND UNBEARABLE FEEDBACK NOISE *
$>

구현

#include <iostream> // c++에서 입,출력을 활용하기위한 라이브러리
#include <cctype> // toupper, strlen등 을 사용하기위한 라이브러리

int main(int argc, char **argv)
{
	if (argc == 1) //  아무것도 입력받지 않았을때
		std::cout << "* LOUD AND UNBEARABLE FEEDBACK NOISE *";
	for (int i = 1 ; i < argc ; i++)
	{
		for (int j = 0 ; j < (int)strlen(argv[i]) ; j++) // 문자열 길이만큼
		{
			std::cout << (char)toupper(argv[i][j]); /// 한글자씩 대문자로 변경후 출력
		}
	}
	std::cout << std::endl; // 줄바꿈을 출력
	return (0);
}

ex01

  • 간단한 전화번호부를 제작, 동적할당 금지, 최대 8개까지 저장, 8개 초과시 오래된 데이터를 삭제하고 저장, 프로그램은 비어있는채로 시작, 각 정보들을 저장할때는 각자 다른 클래스를 생성하고 저장
  • 정보를 입력받아 저장하는 ADD, lastname, firstname, nickname, phonenumber, secret을 저장해야하고 NULL은 금지
  • 간단한 정보를 보여주고 인덱스값을 입력받아 완전한 정보를 출력하는 SEARCH, 열의 너비는 10글자까지 오른쪽정렬로 출력, 각 구역은 '|' 로 구분함, 열의 너비보다 긴 문자의 마지막은 .으로 치환하여 출력
  • 프로그램을 종료하는 EXIT 명령어를 구현하고 이외의 명령어는 무시
  • 하나의 커맨드를 실행한 후 프로그램은 종료되지않고 새로운 커맨드를 받아야함

구현

class Contact // 하나의 전화번호부 정보를 저장할 클래스
{
	private: // 필요한 정보를 저장할 변수들
			std::string firstname;
			std::string lastname;
			std::string nickname;
			std::string phonenum;
			std::string secret;
	public:
	Contact(); // 기본생성자
	Contact(std::string firstname, std::string lastname, \
	std::string nickname, std::string phonenum, std::string secret);
    // 정보를 받고 새로운 contact 클래스를 생성할 생성자
	std::string get_firstname(); // private에있는 firstname을 반환해줄 getter
	std::string get_lastname(); // private에있는 lastname 반환해줄 getter
	std::string get_nickname(); // private에있는 nockname 반환해줄 getter
	void		show_contact(); // 정보들을 출력해줄 함수
	~Contact(); // 소멸자
};

class PhoneBook // 전화번호부가 될 클래스
{
	private:// 필요한 정보를 저장할 변수들
			Contact	contacts[8]; // 총 8개의 정보를 저장할 Contact클래스 배열
			int		idx;
			int		count;
			std::string get_short_string(std::string str);
            // 간략한 정보를 출력하게해줄 함수
			void show_contact(std::string idx);
            // 정보를 출력하게 해줄 함수
	public:
			PhoneBook(); // 기본 생성자
			void add_contact(); // 새 contact를 추가해줄 함수
			void show_contact(); // contact에있는 정보를 출력해줄 함수
			~PhoneBook(); // 소멸자
};

주의사항

  • private에 있는 함수나 변수들은 외부에서 접근할 수 없고 public에 있는 함수와 변수는 외부에서도 접근할 수 있음
  • 외부에서 사용되지않고 내부에서만 사용하는 함수는 private에 있는것이 좋고 이외에는 public에 있어야함
  • private에 있는 변수의 값을 가져오거나 변경하기위해서 getter와 setter함수를 사용
  • 생성자는 생성될때 자동으로 호출, 소멸자는 소멸할때 자동으로 호출됨

ex02

  • 주어진 Account.hpp 와 test.cpp를 기반으로 Account.cpp를 작성하여 log와 동일하게 작동하도록 구현
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 ); // 계좌
};
profile
늅늅

0개의 댓글