c++ stack

♪C++/소스 2018. 9. 19. 01:56

#include<iostream>

using namespace::std;


template<typename T>

class Stack

{

T arr[5];

int index;

int front;

public:

Stack() : index(0)  {};

void Push(T num) 

{

arr[index++] = num;

}

void Pop()

{

cout << arr[--index] << endl;

}

void Empty()

{


}

};


int main()

{

Stack<int> st;


st.Push(10);

st.Push(20);

st.Push(30);


st.Pop();

st.Pop();

st.Pop();



}

'♪C++ > 소스' 카테고리의 다른 글

c++ oop프로젝트 8장  (0) 2018.09.18
열혈강의 3장 연습문제 3-1 3-2  (0) 2017.11.10
성우 1장 OOP 단계별 프로젝트  (0) 2017.10.09

c++ oop프로젝트 8장

♪C++/소스 2018. 9. 18. 23:58


#include <iostream>

#include <cstring>


using namespace std;

const int NAME_LEN = 20;




enum { MAKE = 1, DEPOSIT, WITHDRAW, INQUIRE, EXIT };

class Account

{

int id;      // 계좌번호

int balance;    // 잔    액

char *name;   // 고객이름


public:

Account(int id, char *name, int balance);

Account(const  Account& _Account);

~Account();

int getID() const; //계좌조회

virtual void AddMoney(int money); //입금

void MinMoney(int money); //출금

int getBalance() const; //잔액조회

char* getName() const; //이름

virtual void ShowAllData();


};

Account::Account(int id, char *name, int balance) {

this->id = id;

this->name = new char[strlen(name) + 1];

strcpy(this->name, name);

this->balance = balance;

}

Account::Account(const  Account& _Account)

{

this->id = _Account.id;

this->name = new char[strlen(_Account.name) + 1];

strcpy(this->name, _Account.name);

this->balance = _Account.balance;

}

Account::~Account()

{

delete name;

}


int Account::getID() const

{

return id;

}

void Account:: AddMoney(int money)

{

this->balance += money;

}

int Account:: getBalance() const

{

return balance;

}

void Account:: MinMoney(int money)

{

balance -= money;

}

char* Account:: getName() const

{

return name;

}

void Account::ShowAllData()

{

cout << "ID : " << id << endl;

cout << "이름 : " <<name << endl;

cout << "잔액 : " << balance << endl;

}




//신용계좌 입금시 1프로 추가

class FaithAccount : public Account

{

public:


FaithAccount(int id, char *name, int balance) : Account(id, name, balance + balance * 0.01)

{


}

void AddMoney(int money)

{

Account::AddMoney(money + money * 0.01);

}

};


//기부계좌 입금액 1프로 기부 기부총액 저장

class ContriAccount : public Account

{

int contri_sum; //기부금 합

public:

ContriAccount(int id, char *name, int balance) : Account(id, name, balance - balance * 0.01)

{

contri_sum += balance * 0.01;

}

void AddMoney(int money)

{

Account::AddMoney(money - money * 0.01);

contri_sum += money * 0.01;

}

void ShowAllData()

{

Account::ShowAllData();

cout << "총기부액 : " << contri_sum << endl;

}

};








class AccManger

{


Account* pArr[100];   // Account 저장을 위한 배열

int index;        // 저장된 Account 수

public:

AccManger() :index(0)

{};

void ShowMenu(void);       // 메뉴출력

void MakeAccount(void);    // 계좌개설을 위한 함수

void DepositMoney(void);       // 입    금

void WithdrawMoney(void);      // 출    금

void Inquire(void);     // 잔액조회


};



int main(void)

{

int choice;

AccManger ac;

while (1)

{

ac.ShowMenu();

cout << "선택: ";

cin >> choice;

cout << endl;


switch (choice)

{

case MAKE:

ac.MakeAccount();

break;

case DEPOSIT:

ac.DepositMoney();

break;

case WITHDRAW:

ac.WithdrawMoney();

break;

case INQUIRE:

ac.Inquire();

break;

case EXIT:

return 0;

default:

cout << "Illegal selection.." << endl;

}

}

return 0;

}


void AccManger::ShowMenu(void)

{

cout << "-----Menu------" << endl;

cout << "1. 계좌개설" << endl;

cout << "2. 입    금" << endl;

cout << "3. 출    금" << endl;

cout << "4. 계좌정보 전체 출력" << endl;

cout << "5. 프로그램 종료" << endl;

}


void AccManger::MakeAccount(void)

{

int id;

char name[NAME_LEN];

int balance;

int sel;


cout << "1. 일반계좌 개설" << endl;

cout << "2. 신용계좌 개설" << endl;

cout << "3. 기부계좌 개설" << endl;

cout << ">>";

cin >> sel;

cout << "[계좌개설]" << endl;

cout << "계좌ID: "; cin >> id;

cout << "이  름: "; cin >> name;

cout << "입금액: "; cin >> balance;

cout << endl;


if (sel == 1)

pArr[index++] = new Account(id, name, balance);

else if (sel == 2)

pArr[index++] = new FaithAccount(id, name, balance);

else if (sel == 3)

pArr[index++] = new ContriAccount(id, name, balance);

else

cout << "오류"<<endl;

}


void AccManger::DepositMoney(void)

{

int money;

int id;

cout << "[입    금]" << endl;

cout << "계좌ID: "; cin >> id;

cout << "입금액: "; cin >> money;


for (int i = 0; i<index; i++)

{

if (pArr[i]->getID() == id)

{

pArr[i]->AddMoney(money);

cout << "입금완료" << endl << endl;

return;

}

}

cout << "유효하지 않은 ID 입니다." << endl << endl;

}


void AccManger::WithdrawMoney(void)

{

int money;

int id;

cout << "[출    금]" << endl;

cout << "계좌ID: "; cin >> id;

cout << "출금액: "; cin >> money;


for (int i = 0; i<index; i++)

{

if (pArr[i]->getID() == id)

{

if (pArr[i]->getBalance()<money)

{

cout << "잔액부족" << endl << endl;

return;

}


pArr[i]->MinMoney(money);

cout << "출금완료" << endl << endl;

return;

}

}

cout << "유효하지 않은 ID 입니다." << endl << endl;

}


void AccManger::Inquire(void)

{

for (int i = 0; i<index; i++)

{

pArr[i]->ShowAllData();

}

}

'♪C++ > 소스' 카테고리의 다른 글

c++ stack  (0) 2018.09.19
열혈강의 3장 연습문제 3-1 3-2  (0) 2017.11.10
성우 1장 OOP 단계별 프로젝트  (0) 2017.10.09

8-3 연습문제

☆C언어/소스 2018. 9. 18. 22:32

#include <iostream>

#include <cstring>

using namespace std;


class Employee

{

private:

char name[100];

public:

Employee(const char * name)

{

strcpy(this->name, name);

}

void ShowYourName() const

{

cout << "name: " << name << endl;

}

virtual int GetPay() const

{

return 0;

}

virtual void ShowSalaryInfo() const

{  }

};


class PermanentWorker : public Employee

{

private:

int salary;

public:

PermanentWorker(const char * name, int money)

: Employee(name), salary(money)

{  }

int GetPay() const

{

return salary;

}

void ShowSalaryInfo() const

{

ShowYourName();

cout << "salary: " << GetPay() << endl << endl;

}

};


class TemporaryWorker : public Employee

{

private:

int workTime;

int payPerHour;

public:

TemporaryWorker(const char * name, int pay)

: Employee(name), workTime(0), payPerHour(pay)

{  }

void AddWorkTime(int time)

{

workTime += time;

}

int GetPay() const

{

return workTime * payPerHour;

}

void ShowSalaryInfo() const

{

ShowYourName();

cout << "salary: " << GetPay() << endl << endl;

}

};


class SalesWorker : public PermanentWorker

{

private:

int salesResult;    // 월 판매실적

double bonusRatio;    // 상여금 비율 

public:

SalesWorker(const char * name, int money, double ratio)

: PermanentWorker(name, money), salesResult(0), bonusRatio(ratio)

{  }

void AddSalesResult(int value)

{

salesResult += value;

}

int GetPay() const

{

return PermanentWorker::GetPay()

+ (int)(salesResult*bonusRatio);

}

void ShowSalaryInfo() const

{

ShowYourName();

cout << "salary: " << GetPay() << endl << endl;

}

};


class EmployeeHandler

{

private:

Employee * empList[50];

int empNum;

public:

EmployeeHandler() : empNum(0)

{ }

void AddEmployee(Employee* emp)

{

empList[empNum++] = emp;

}

void ShowAllSalaryInfo() const

{


for (int i = 0; i<empNum; i++)

empList[i]->ShowSalaryInfo();


}

void ShowTotalSalary() const

{

int sum = 0;


for (int i = 0; i<empNum; i++)

sum += empList[i]->GetPay();


cout << "salary sum: " << sum << endl;

}

~EmployeeHandler()

{

for (int i = 0; i<empNum; i++)

delete empList[i];

}

};


int main(void)

{

// 직원관리를 목적으로 설계된 컨트롤 클래스의 객체생성

EmployeeHandler handler;


// 정규직 등록

handler.AddEmployee(new PermanentWorker("JUN", 2000));

handler.AddEmployee(new PermanentWorker("LEE", 3500));


// 임시직 등록

TemporaryWorker * alba = new TemporaryWorker("Jung", 1800);

alba->AddWorkTime(5); // 5시간 일한결과 등록

handler.AddEmployee(alba);


// 영업직 등록

SalesWorker * sell = new SalesWorker("Hong", 2000, 0.2);

sell->AddSalesResult(7000); // 영업실적 7000

handler.AddEmployee(sell);


// 이번 달에 지불해야 할 급여의 정보

handler.ShowAllSalaryInfo();


// 이번 달에 지불해야 할 급여의 총합

handler.ShowTotalSalary();

return 0;

}

'☆C언어 > 소스' 카테고리의 다른 글

c++ q  (0) 2018.09.19
문자열 숫자 쉽게 숫자로 바꾸기  (0) 2017.12.25
'q' 입력시 종료  (0) 2017.11.21
달력  (0) 2017.11.13
괄호 검사  (0) 2017.06.17

박사 붐의 폭심만만 프로젝트 치명-마이라 로트스프링

게임&음악&웃긴거 2018. 9. 8. 18:20


1) 올빼미 소환(가시덤불 호랑이) ->모두 공격(마아라)-> 영능



2) 광기 물약 (서리늑대 그런틀)-> 서리늑대 그런틀 공격( 서리늑대 그런틀) -> 실바나스 공격(마이아)->왕 크루쉬 공격(마이라)-> 정신분열->성스러운 일격(마이라)



3) 위습 감자 공격(감자폭탄) ->피의 칼날 장착->내면의 분노(거품무는 광전사) -> 거품무는 광전사 공격(감자폭탄)



4) 영능 (왼쪽 구루바시 광전사) ->얼음 화살 (곰)-> 탈로스 소환 -> 금단의 불꽃(왼쪽 구루바시 광전사)-> 구루바시 광전사 공격x2(마이라)


5) 기습(거만한 연기자) -> 광전사 , 코볼트 공격(마이라) -> 그림자 밟기(코볼트) -> 코볼트 소환 -> 사악한 일격(마이라)->칼날꽃잎(마이라)->오염된 노움 소환 -> 기습(오염된 노움)



6) 광란(헬스크림)->가로쉬 공격(누더기 골램)-> 마격(투기장제왕)->회전베기->  헬스크림 공격(마이라)



7) 죽음의 기사 우서->충전 -> 비어도->영능->검은숲 요정-> 영능->충전 -> 영능 -> 천벌망치(발광로봇)-> 영능

c++ 오버라이딩

♪C++ 2018. 9. 6. 09:04

//은닉 특성

#include<iostream>

using namespace std;


class A

{

public:

void fct()

{

cout << "A"<<endl;

}

};

class B : public A

{

public:

void fct()

{

cout << "B" << endl;

}

};


int main()

{

B* b1 = new B;

b1->fct();

A* a1 = b1;

a1->fct();

}


//virtual 넣어서 재정의 특성

#include<iostream>

using namespace std;


class A

{

public:

virtual void fct()

{

cout << "A"<<endl;

}

};

class B : public A

{

public:

void fct()

{

cout << "B" << endl;

}

};


int main()

{

B* b1 = new B;

b1->fct();

A* a1 = b1;

a1->fct();

}

'♪C++' 카테고리의 다른 글

연습문제 8-2  (0) 2018.09.04
c++ 다른 언어랑 다른점  (0) 2018.09.04
C++ 생성자  (0) 2018.09.03
4996 에러  (0) 2018.08.14
c++ 연습 8-1  (0) 2010.11.14

레식 총기 부착물 18/9/5 기준 변경

게임&음악&웃긴거 2018. 9. 5. 17:59


벅 반동 줄었다는데 제어가 안되서 여전히 포구...

엘라 좌우반동 여전히 있어 컴팬

서마 수직반동 줄어서 소염기 가능

예거 좌우반동 줄어서 리플 소염 수직



smg류 수직반동이 강해짐


smg11,12 소염기로 단타로 쓰거나 걍 딴거 써야할듯

베어링 이건 노답..

연습문제 8-2

♪C++ 2018. 9. 4. 22:04


오류 되는 문장 p2->Work();


이유 : 


person <-student<-partimestd  상속 관계


partimestd 주소를 student 포인터로 저장이 가능하지만

접근 권한이 student 기준이라 partimestd 객체 함수 접근 권한이 없음



반대로 partimestd 포인터로  student 주소를 저장 할 수 없다.


partimestd는 partimestd이지만

student는 상속으로 student는partimestd이다 성립


간단히 말해서 객제포인터로 저장하려면 상속을 받는 하위 클래스이어야한다.

'♪C++' 카테고리의 다른 글

c++ 오버라이딩  (0) 2018.09.06
c++ 다른 언어랑 다른점  (0) 2018.09.04
C++ 생성자  (0) 2018.09.03
4996 에러  (0) 2018.08.14
c++ 연습 8-1  (0) 2010.11.14

c++ 다른 언어랑 다른점

♪C++ 2018. 9. 4. 17:13

class A

{...소스소스

}


 A(10)


java , c# 생성과 동시에 초기화 가능


A(10)

A

c++안됨 이렇게 밖에 생성안되면 void생성자가 있어야하는데?

그래서 c++은 무조건 void 생성자가 디폴트로 들어간다


A(){...}

'♪C++' 카테고리의 다른 글

c++ 오버라이딩  (0) 2018.09.06
연습문제 8-2  (0) 2018.09.04
C++ 생성자  (0) 2018.09.03
4996 에러  (0) 2018.08.14
c++ 연습 8-1  (0) 2010.11.14

C++ 생성자

♪C++ 2018. 9. 3. 17:53




class A

{

int x,y;


A(int _x=0,int _y=0) : x(_x),y(_y)


}


_x=0 _y=0  디폴트 변수고


x(_x),y(_y) 객채가 생성되고 생성자가 호출됬을떄 사용되는 초기화 리스트다 

x<-_x

y<-_y  초기화

햇갈려 하는 사람이 많아서 대충 적어둠

'♪C++' 카테고리의 다른 글

연습문제 8-2  (0) 2018.09.04
c++ 다른 언어랑 다른점  (0) 2018.09.04
4996 에러  (0) 2018.08.14
c++ 연습 8-1  (0) 2010.11.14
OOP프로젝트 5단계  (0) 2010.11.02

박사 붐의 폭심만만 프로젝트 치명-독성 전문가 폴라크

게임&음악&웃긴거 2018. 8. 28. 21:33


1) 영능 ->독성 -> 냉혈(푸른아가미전사) -> 올 공격



2) 얼음화살(폴라크)->얼음창(폴라크)-> 마나지룡 공격(폴라크)



3) 맷돼지 소환->질풍(맷돼지) ->가혹한 하사관 소환(맷돼지) -> 대지의무기(맷돼지) -> 맷돼지 공격(폴라크)



4) 맷돼지 공격(무쇠가죽 불곰) -> 푸른아가미 전사 공격(방패병)->맷돼지 소환(불꽃토탬왼쪽) 공격(플라그)x2 -> 늑대기수 소환(불꽃토탬왼쪽) 공격(폴라크)



5) 흉폭한 늑대인간 소환x2 -> 소용돌이-> 흉폭한늑대인간 공격(참나무 골램)x2 ->영능->방패밀쳐내기(광전사)->광전사 공격(폴라크)



6) 윤회(째깍거리는 누더기골램)->리로이 소환 공격(폴라크)->윤회(리로이)-> 리로이 공격(폴라크)



7)우주변형물 소환 ->별빛사절 소환 ->화염구(폴라크)->동전 -> 비전 작열(청동 문지기)->마나지룡 공격(폴라크)



8) 육식보물상자 소환(테엽돌이 기계골램) -> 죽은척(육식보물상자)->사냥꾼의 징표(육식보물상자) -> 신비한 화살 (육식보물상자)->영능


9) 비상용 계획 한장 쓰면 끝