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>
#include <cctype>
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);
std::string get_firstname();
std::string get_lastname();
std::string get_nickname();
void show_contact();
~Contact();
};
class PhoneBook
{
private:// 필요한 정보를 저장할 변수들
Contact contacts[8];
int idx;
int count;
std::string get_short_string(std::string str);
void show_contact(std::string idx);
public:
PhoneBook();
void add_contact();
void show_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 );
};