1. 문제
10. 컴퓨터의 주기억장치를 모델링하는 클래스 Ram을 구현하려고 한다. Ram 클래스는 데이터가 기록될 메모리 공간과 크기 정보를 가지고, 주어진 주소에 데이터를 기록하고(write), 주어진 주소로부터 데이터를 읽어 온다(read). Ram 클래스는 다음과 같이 선언된다.
다음 main() 함수는 100 번지에 20을 저장하고, 101 번지에 30을 저장한 후, 100 번진와 101 번지의 값을 읽고 더하여 102번지에 저장하는 코드이다.
실행 결과를 참고하여 Ram.h, Ram.cpp, main.cpp로 헤더 파일과 cpp 파일을 분리하여 프로그램을 완성하라.
2. 결과
3. 코드
// Ram.h
class Ram {
char mem[100*1024];
int size;
public :
Ram();
~Ram();
char read(int address);
void write(int address, char value);
};
// Ram.cpp
#include <iostream>
using namespace std;
#include "Ram.h"
Ram::Ram() {
for(int i=0; i<100*1024; i++ )
mem[i] = 0;
size = 100*1024;
}
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);
ram.write(101, 30);
char res = ram.read(100) + ram.read(101);
ram.write(102, res);
cout << "102 번지의 값 = " << (int)ram.read(102) << endl;
}
4. 설명
생성자에서 for문을 이용하여서 멤버들을 초기화 해주고, size에 크기를 저장합니다.
소멸자 함수의 cout << "메모리 제거됨" << endl;을 작성하여서 객체가 소멸할 때 실행되도록 합니다.
read(int address)로 입력 받은 매개변수의 해당하는 주소의 저장된 값을 return 합니다.
write(int address, char value)함수는 주소와 값을 매개변수로 받은 다음 해당하는 주소에 값을 저장합니다.
'명품 C++ programming' 카테고리의 다른 글
명품 C++ programming 실습문제 4장 1번 (0) | 2019.04.06 |
---|---|
명품 C++ programming 3장 Open Challenge (0) | 2019.04.06 |
명품 C++ programming 실습문제 3장 9번 (0) | 2019.04.06 |
명품 C++ programming 실습문제 3장 8번 (2) (0) | 2019.04.06 |
명품 C++ programming 실습문제 3장 8번 (1) (0) | 2019.04.06 |