ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 명품 C++ 3장 12번
    C++ 2018. 10. 28. 23:50

    12. 컴퓨터의 주기억장치를 모델링하는 클래스 Ram을 구현하려고 한다. Ram 클래스는 데이터가 기록될 메모리 공간과 크기 정보를 가지고, 주어진 주소에 데이터를 기록하고(write), 주어진 주소로부터 데이터를 읽어 온다(read). 실행 결과를 참고하여 Ram.h Ram.cpp main.cpp로 헤더 파일과 cpp 파일을 분리하여 프로그램을 완성하라.


    소스코드


    Ram.h


    #ifndef RAM_H
    #define RAM_H
    class Ram {
        char mem[100 * 1024]; // 100kb 메모리. 한 번지는 한 바이트이므로 char 타입 사용.
        int size;
    public:
        Ram(); // mem 배열을 0으로 초기화 하고 size를 100*1024로 초기화
        ~Ram(); // "메모리 제거됨" 문자열 출력
        char read(int address); // address 주소의 메모리 바이트 리턴
        void write(int address, char value); // address 주소에 한 바이트로 value 저장
    };
    #endif


    Ram.cpp


    #include <iostream>
    using namespace std;
    #include "Ram.h"
    Ram::Ram() {
        size = 100 * 1024;
        for (int i = 0; i < size; ++i)
            mem[i] = 0;
    }
    Ram::~Ram() {
        cout << "메모리 제거됨" << endl;
    }
    char Ram::read(int address) {
        return mem[address];
    }
    void Ram::write(int address, char value) {
        mem[address] = value;
    }


    main.cpp


    #include <iostream>
    using namespace std;
    #include "Ram.h"
    int main() {
        Ram ram;
        ram.write(100, 20);// 100 번지에 20 저장
        ram.write(101, 30);// 101번지에 30 저장
        char res = ram.read(100) + ram.read(101); // 20 + 30 = 50
        ram.write(102, res); //102 번지에 50 저장
        cout << "102 번지의 값 = " << (int)ram.read(102) << endl; // 102 번지 값 출력
    }


    실행결과


    11번과 마찬가지로, 헤더파일에는 클래스를 만들고, cpp파일에 멤버함수를 구현해주어야합니다.

    또한, 헤더파일을 선언해야하구요.

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

    명품 C++ 4장 1번  (0) 2018.10.29
    명품 C++ 3장 Open Challenge  (0) 2018.10.29
    명품 C++ 3장 11번  (0) 2018.10.28
    명품 C++ 3장 10번  (0) 2018.10.28
    명품 C++ 3장 9번  (0) 2018.10.28

    댓글

© 2018 TISTORY. All rights reserved.