hugDog
Android DevLog
hugDog
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๐Ÿ™Œ Hello? (162)
    • ๐Ÿงฉ์•ˆ๋“œ๋กœ์ด๋“œ (12)
      • ๊ฐœ๋… ์ •๋ฆฌ (5)
      • ๋ฒ„๊ทธ ํ•ด๊ฒฐ (4)
      • ๊ธฐํƒ€ (3)
    • ๐Ÿ”์•Œ๊ณ ๋ฆฌ์ฆ˜ (54)
      • ๊ฐœ๋… (0)
      • ๋ฐฑ์ค€ (48)
      • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (6)
    • ๐Ÿ“„๊ฐœ๋ฐœ ์ผ์ง€ (0)
      • FINPO (0)
    • ๐Ÿ”คํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด (71)
      • C++ ์ •๋ฆฌ (49)
      • C++๊ธฐ์ดˆํ”Œ๋Ÿฌ์Šค ์—ฐ์Šต๋ฌธ์ œ (20)
      • Kotlin (2)
    • โญProject (1)
    • ๐ŸšดTIL (13)
      • Clean Code (13)
    • ๐Ÿšฉ๊ธฐํƒ€ (9)
      • ๋ชฉํ‘œ (6)
      • ์ผ์ƒ (3)
      • ๋ฌธ์„œ (0)

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
hugDog
๐Ÿ”คํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด/C++๊ธฐ์ดˆํ”Œ๋Ÿฌ์Šค ์—ฐ์Šต๋ฌธ์ œ

(C++๊ธฐ์ดˆํ”Œ๋Ÿฌ์Šค 6ํŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—ฐ์Šต ์ •๋‹ต,์†”๋ฃจ์…˜) CHAPTER 15 ํ”„๋ Œ๋“œ,์˜ˆ์™ธ,๊ธฐํƒ€ ์‚ฌํ•ญ p.1206~ 1๋ฒˆ~4๋ฒˆ

๐Ÿ”คํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด/C++๊ธฐ์ดˆํ”Œ๋Ÿฌ์Šค ์—ฐ์Šต๋ฌธ์ œ

(C++๊ธฐ์ดˆํ”Œ๋Ÿฌ์Šค 6ํŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—ฐ์Šต ์ •๋‹ต,์†”๋ฃจ์…˜) CHAPTER 15 ํ”„๋ Œ๋“œ,์˜ˆ์™ธ,๊ธฐํƒ€ ์‚ฌํ•ญ p.1206~ 1๋ฒˆ~4๋ฒˆ

2020. 10. 8. 19:37
728x90

1๋ฒˆ

// tv.h -- Tv ํด๋ž˜์Šค์™€ Remote ํด๋ž˜์Šค
#ifndef TV_H_
#define TV_H_

class Tv
{
public:
    friend class Remote;   // Remote๋Š” Tv์˜ private ๋ถ€๋ถ„์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค
    enum { Off, On };
    enum { MinVal, MaxVal = 20 };
    enum { Antenna, Cable };
    enum { TV, DVD };

    Tv(int s = Off, int mc = 125) : state(s), volume(5),
        maxchannel(mc), channel(2), mode(Cable), input(TV) {}
    void onoff() { state = (state == On) ? Off : On; }
    bool ison() const { return state == On; }
    bool volup();
    bool voldown();
    void chanup();
    void chandown();
    void set_mode() { mode = (mode == Antenna) ? Cable : Antenna; }
    void set_input() { input = (input == TV) ? DVD : TV; }
    void settings() const; // ๋ชจ๋“  ์„ค์ •๊ฐ’๋“ค์„ ์ถœ๋ ฅํ•œ๋‹ค
    void set_mode2(Remote& r);
private:
    int state;             // on ๋˜๋Š” off
    int volume;            // ๋””์ง€ํ„ธ ๋ณผ๋ฅจ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•œ๋‹ค
    int maxchannel;        // ์ตœ๋Œ€ ์ฑ„๋„ ์ˆ˜
    int channel;           // ํ˜„์žฌ ์„ค์ •๋œ ์ฑ„๋„
    int mode;              // ์ง€์ƒํŒŒ ๋ฐฉ์†ก ๋˜๋Š” ์ผ€์ด๋ธ” ๋ฐฉ์†ก
    int input;             // TV ์ž…๋ ฅ ๋˜๋Š” DVD ์ž…๋ ฅ
};

class Remote
{
    friend class Tv;
private:
    int mode;              // TV ์กฐ์ •๊ธฐ ๋˜๋Š” DVD ์กฐ์ •๊ธฐ
    int mode2; //๋Œ€ํ™” ๋ชจ๋“œ ๋˜๋Š” ์ผ๋ฐ˜ ๋ชจ๋“œ
public:
    enum{Normal,Conversation};
    Remote(int m = Tv::TV,int m2 = Normal) : mode(m),mode2(m2) {}
    bool volup(Tv& t) { return t.volup(); }
    bool voldown(Tv& t) { return t.voldown(); }
    void onoff(Tv& t) { t.onoff(); }
    void chanup(Tv& t) { t.chanup(); }
    void chandown(Tv& t) { t.chandown(); }
    void set_chan(Tv& t, int c) { t.channel = c; }
    void set_mode(Tv& t) { t.set_mode(); }
    void set_input(Tv& t) { t.set_input(); }
    void show_mode2();
};

inline void Tv::set_mode2(Remote& r) { if (state == On) r.mode2 = (r.mode2 == Remote::Normal) ? Remote::Conversation : Remote::Normal; }

#endif


// tv.cpp -- Tv ํด๋ž˜์Šค๋ฅผ ์œ„ํ•œ ๋ฉ”์„œ๋“œ๋“ค(Remote ๋ฉ”์„œ๋“œ๋“ค์€ ์ธ๋ผ์ธ์œผ๋กœ ์‚ฌ์šฉ)
#include <iostream>
#include "tv.h"

bool Tv::volup()
{
    if (volume < MaxVal)
    {
        volume++;
        return true;
    }
    else
        return false;
}
bool Tv::voldown()
{
    if (volume > MinVal)
    {
        volume--;
        return true;
    }
    else
        return false;
}

void Tv::chanup()
{
    if (channel < maxchannel)
        channel++;
    else
        channel = 1;
}

void Tv::chandown()
{
    if (channel > 1)
        channel--;
    else
        channel = maxchannel;
}

void Tv::settings() const
{
    using std::cout;
    using std::endl;
    cout << "TV is " << (state == Off ? "OFF" : "ON") << endl;
    if (state == On)
    {
        cout << "๋ณผ๋ฅจ = " << volume << endl;
        cout << "์ฑ„๋„ = " << channel << endl;
        cout << "๋ชจ๋“œ = "
            << (mode == Antenna ? "์ง€์ƒํŒŒ ๋ฐฉ์†ก" : "์ผ€์ด๋ธ” ๋ฐฉ์†ก") << endl;
        cout << "์ž…๋ ฅ = " << (input == TV ? "TV" : "DVD") << endl;
    }
}

void Remote::show_mode2()
{
    std::cout << "๋ชจ๋“œ2 = " << (mode2 == Normal ? "Normal" : "Conversation") << '\n';
}


//use_tv.cpp -- Tv์™€ Remote ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค
#include <iostream>
#include "tv.h"

int main()
{
    using std::cout;
    Tv s42;
    cout << "42\" TV์˜ ์ดˆ๊ธฐ ์„ค์ •๊ฐ’:\n";
    s42.settings();
    s42.onoff();
    s42.chanup();
    cout << "\n42\" TV์˜ ๋ณ€๊ฒฝ๋œ ์„ค์ •๊ฐ’:\n";
    s42.settings();

    Remote grey;
    cout << "\ngrey ๋ฆฌ๋ชจ์ปจ์˜ ์ดˆ๊ธฐ ์„ค์ •๊ฐ’:\n";
    grey.show_mode2();

    grey.set_chan(s42, 10);
    grey.volup(s42);
    grey.volup(s42);
    cout << "\n๋ฆฌ๋ชจ์ฝ˜ ์‚ฌ์šฉ ํ›„ 42\" TV์˜ ์„ค์ •๊ฐ’:\n";
    s42.settings();
    s42.set_mode2(grey);
    grey.show_mode2();

    s42.onoff();
    cout << "\nTv ์ข…๋ฃŒ ํ›„ Remote์˜ ๋ชจ๋“œ ๋ณ€๊ฒฝ\n";
    s42.settings();
    s42.set_mode2(grey);
    grey.show_mode2();


    return 0;
}

 

 

2๋ฒˆ

// exc_mean.h  -- hmean(), gmean()์„ ์œ„ํ•œ ์˜ˆ์™ธ ํด๋ž˜์Šค
#include <iostream>
#include<stdexcept>

class bad_hmean : public std::logic_error
{
public:
    explicit bad_hmean(const std::string &s= "์ž˜๋ชป๋œ ๋งค๊ฐœ๋ณ€์ˆ˜: a = -b\n") : logic_error(s) {}
};



class bad_gmean : public std::logic_error
{
public:
    explicit bad_gmean(const std::string&s= "gmean() ๋งค๊ฐœ๋ณ€์ˆ˜๋“ค์€ >= 0์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.\n") 
        : logic_error(s) {} 
};

//error4.cpp -- ์˜ˆ์™ธ ํด๋ž˜์Šค๋“ค์„ ์‚ฌ์šฉํ•œ๋‹ค
#include <iostream>
#include <cmath> // (๋˜๋Š” math.h) unix ์‚ฌ์šฉ์ž๋Š” -lm ํ”Œ๋ž˜๊ทธ๊ฐ€ ํ•„์š”ํ•˜๋‹ค
#include "exc_mean.h"
// ํ•จ์ˆ˜ ์›ํ˜•
double hmean(double a, double b) throw(bad_hmean);
double gmean(double a, double b) throw(bad_gmean);
int main()
{
    using std::cout;
    using std::cin;
    using std::endl;

    double x, y, z;

    cout << "๋‘ ์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜์‹ญ์‹œ์˜ค: ";
    while (cin >> x >> y)
    {
        try {                  // try ๋ธ”๋ก์˜ ์‹œ์ž‘
            z = hmean(x, y);
            cout << x << ", " << y << "์˜ ์กฐํ™”ํ‰๊ท ์€ "
                << z << "์ž…๋‹ˆ๋‹ค.\n";
            cout << x << ", " << y << "์˜ ๊ธฐํ•˜ํ‰๊ท ์€ "
                << gmean(x, y) << "์ž…๋‹ˆ๋‹ค.\n";
            cout << "๋‹ค๋ฅธ ๋‘ ์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜์‹ญ์‹œ์˜ค(๋๋‚ด๋ ค๋ฉด q): ";
        }				// try ๋ธ”๋ก์˜ ๋
        catch (bad_hmean& bg)    	// catch ๋ธ”๋ก์˜ ์‹œ์ž‘
        {
            bg.what();
            cout << "๋‹ค์‹œ ํ•˜์‹ญ์‹œ์˜ค.\n";
            continue;
        }
        catch (bad_gmean& hg)
        {
            cout << hg.what();
            cout << "์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋” ์ด์ƒ ์ง„ํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.\n";
            break;
        } 				// catch ๋ธ”๋ก์˜ ๋
    }
    cout << "ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.\n";
    return 0;
}

double hmean(double a, double b)
{
    if (a == -b)
        throw bad_hmean();
    return 2.0 * a * b / (a + b);
}

double gmean(double a, double b)
{
    if (a < 0 || b < 0)
        throw bad_gmean();
    return std::sqrt(a * b);
}

 

 

3๋ฒˆ

// exc_mean.h  -- hmean(), gmean()์„ ์œ„ํ•œ ์˜ˆ์™ธ ํด๋ž˜์Šค
#include <iostream>
#include<stdexcept>
class bad_mean : public std::logic_error
{
protected:
    double v1;
    double v2;
public:
    bad_mean(double a = 0, double b = 0,const std::string &s = "none")
        :v1(a),v2(b),logic_error(s) {}
    virtual ~bad_mean() {}
    virtual void mesg() = 0;
};

class bad_hmean : public bad_mean
{
public:
    explicit bad_hmean(double a=0,double b=0,const std::string &s= "bad_mean()์—์„œ ์—๋Ÿฌ ๋ฐœ์ƒ\n") 
        : bad_mean(a,b,s) {}
    void mesg()
    {
        std::cout <<"a: " << v1 << ", b: "<< v2 << '\n';
        std::cout<<"์ž˜๋ชป๋œ ๋งค๊ฐœ๋ณ€์ˆ˜: a = -b\n";
    }
};


class bad_gmean : public bad_mean
{
public:
    explicit bad_gmean(double a = 0, double b = 0, const std::string&s= "gmean()์—์„œ ์—๋Ÿฌ ๋ฐœ์ƒ\n")
        : bad_mean(a, b, s) {}
    void mesg()
    {
        std::cout << "a: " << v1 << ", b: " << v2 << '\n';
        std::cout << "gmean() ๋งค๊ฐœ๋ณ€์ˆ˜๋“ค์€ >= 0์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.\n";
    }
};

//error4.cpp -- ์˜ˆ์™ธ ํด๋ž˜์Šค๋“ค์„ ์‚ฌ์šฉํ•œ๋‹ค
#include <iostream>
#include <cmath> // (๋˜๋Š” math.h) unix ์‚ฌ์šฉ์ž๋Š” -lm ํ”Œ๋ž˜๊ทธ๊ฐ€ ํ•„์š”ํ•˜๋‹ค
#include "exc_mean.h"
// ํ•จ์ˆ˜ ์›ํ˜•
double hmean(double a, double b) throw(bad_hmean);
double gmean(double a, double b) throw(bad_gmean);
int main()
{
    using std::cout;
    using std::cin;
    using std::endl;

    double x, y, z;

    cout << "๋‘ ์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜์‹ญ์‹œ์˜ค: ";
    while (cin >> x >> y)
    {
        try {                  // try ๋ธ”๋ก์˜ ์‹œ์ž‘
            z = hmean(x, y);
            cout << x << ", " << y << "์˜ ์กฐํ™”ํ‰๊ท ์€ "
                << z << "์ž…๋‹ˆ๋‹ค.\n";
            cout << x << ", " << y << "์˜ ๊ธฐํ•˜ํ‰๊ท ์€ "
                << gmean(x, y) << "์ž…๋‹ˆ๋‹ค.\n";
            cout << "๋‹ค๋ฅธ ๋‘ ์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜์‹ญ์‹œ์˜ค(๋๋‚ด๋ ค๋ฉด q): ";
        }				// try ๋ธ”๋ก์˜ ๋
        catch (bad_mean& bg)    	// catch ๋ธ”๋ก์˜ ์‹œ์ž‘
        {
            if (typeid(bad_hmean) == typeid(bg))
            {
                cout<<bg.what();
                bg.mesg();
                break;
            }
            else if (typeid(bad_gmean) == typeid(bg))
            {
                cout<<bg.what();
                bg.mesg();
                break;
            }
        }
    }
    cout << "ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.\n";
    return 0;
}

double hmean(double a, double b)
{
    if (a == -b)
        throw bad_hmean(a,b);
    return 2.0 * a * b / (a + b);
}

double gmean(double a, double b)
{
    if (a < 0 || b < 0)
        throw bad_gmean(a,b);
    return std::sqrt(a * b);
}

 

 

4๋ฒˆ

// use_sales.cpp  -- ๋‚ดํฌ๋œ ์˜ˆ์™ธ
#include <iostream>
#include "sales.h"

int main()
{
    using std::cout;
    using std::cin;
    using std::endl;

    double vals1[12] =
    {
        1220, 1100, 1122, 2212, 1232, 2334,
        2884, 2393, 3302, 2922, 3002, 3544
    };

    double vals2[12] =
    {
        12, 11, 22, 21, 32, 34,
        28, 29, 33, 29, 32, 35
    };

    Sales sales1(2011, vals1, 12);
    LabeledSales sales2("Blogstar", 2012, vals2, 12);
    LabeledSales::nbad_index* p;

    cout << "์ฒซ ๋ฒˆ์งธ try ๋ธ”๋ก:\n";
    try
    {
        int i;
        cout << "Year = " << sales1.Year() << endl;
        for (i = 0; i < 12; ++i)
        {
            cout << sales1[i] << ' ';
            if (i % 6 == 5)
                cout << endl;
        }
        cout << "Year = " << sales2.Year() << endl;
        cout << "Label = " << sales2.Label() << endl;
        for (i = 0; i <= 12; ++i)
        {
            cout << sales2[i] << ' ';
            if (i % 6 == 5)
                cout << endl;
        }
        cout << "try ๋ธ”๋ก 1์˜ ๋.\n";
    }
    catch (Sales::bad_index& bad)
    {
        cout << bad.what();
        if (p = dynamic_cast<LabeledSales::nbad_index*>(&bad))
            cout << "Company: " << p->label_val() << endl;
        cout << "์ž˜๋ชป๋œ ์ธ๋ฑ์Šค: " << bad.bi_val() << endl;
    }
    cout << "\n๋‹ค์Œ try ๋ธ”๋ก:\n";
    try
    {
        sales2[2] = 37.5;
        sales1[20] = 23345;
        cout << "try ๋ธ”๋ก 2์˜ ๋.\n";
    }
    catch (Sales::bad_index& bad)
    {
        cout << bad.what();
        if (p = dynamic_cast<LabeledSales::nbad_index*>(&bad))
            cout << "Company: " << p->label_val() << endl;
        cout << "์ž˜๋ชป๋œ ์ธ๋ฑ์Šค: " << bad.bi_val() << endl;
    }
    cout << "ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.\n";
    return 0;
}
728x90
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ (์ƒˆ์ฐฝ์—ด๋ฆผ)
    '๐Ÿ”คํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด/C++๊ธฐ์ดˆํ”Œ๋Ÿฌ์Šค ์—ฐ์Šต๋ฌธ์ œ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • (C++๊ธฐ์ดˆํ”Œ๋Ÿฌ์Šค 6ํŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—ฐ์Šต ์ •๋‹ต,์†”๋ฃจ์…˜) CHAPTER 17 ์ž…๋ ฅ, ์ถœ๋ ฅ, ํŒŒ์ผ p.1458~ 1๋ฒˆ~7๋ฒˆ
    • (C++๊ธฐ์ดˆํ”Œ๋Ÿฌ์Šค 6ํŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—ฐ์Šต ์ •๋‹ต,์†”๋ฃจ์…˜) CHAPTER 16 string ํด๋ž˜์Šค์™€ ํ‘œ์ค€ ํ…œํ”Œ๋ฆฟ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ p.1342~ 1๋ฒˆ~10๋ฒˆ
    • (C++๊ธฐ์ดˆํ”Œ๋Ÿฌ์Šค 6ํŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—ฐ์Šต ์ •๋‹ต,์†”๋ฃจ์…˜) CHAPTER 14 C++ ์ฝ”๋“œ์˜ ์žฌํ™œ์šฉ p.1103~ 1๋ฒˆ~5๋ฒˆ
    • (C++๊ธฐ์ดˆํ”Œ๋Ÿฌ์Šค 6ํŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—ฐ์Šต ์ •๋‹ต,์†”๋ฃจ์…˜) CHAPTER 13 ํด๋ž˜์Šค์˜ ์ƒ์† p.989~ 1๋ฒˆ~4๋ฒˆ
    hugDog
    hugDog
    ์•ˆ๋“œ๋กœ์ด๋“œ ๊ณต๋ถ€ ์ค‘์ธ ํ•™์ƒ์ž…๋‹ˆ๋‹ค!
    Android DevLog์•ˆ๋“œ๋กœ์ด๋“œ ๊ณต๋ถ€ ์ค‘์ธ ํ•™์ƒ์ž…๋‹ˆ๋‹ค!

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

    ๊ฐœ์ธ์ •๋ณด

    • ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ
    • ํฌ๋Ÿผ
    • ๋กœ๊ทธ์ธ

    ๋‹จ์ถ•ํ‚ค

    ๋‚ด ๋ธ”๋กœ๊ทธ

    ๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
    Q
    Q
    ์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
    W
    W

    ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

    ๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
    E
    E
    ๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
    C
    C

    ๋ชจ๋“  ์˜์—ญ

    ์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
    S
    S
    ๋งจ ์œ„๋กœ ์ด๋™
    T
    T
    ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
    H
    H
    ๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
    Shift + /
    โ‡ง + /

    * ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.