문제 :
아래와 같은 BaseMemory 클래스를 상속받는 ROM(Read Only Memory), RAM 클래스를 작성하라.
BaseMemory에 필요한 코드를 수정 추가하여 적절히 완성하라.
1
2
3
4
5
|
class BaseMemory{
char *mem;
protected:
BaseMemory(int size) { mem = new char [size]; }
};
|
ROM은 읽기 전용 메모리이므로 작동 중에 값을 쓸 수가 없기 때문에, 공장에서 생산할 때 생산자가 요청한 데이터로 초기화 하는데 이 작업을 굽는다(burn)라고 한다. 그러므로 ROM은 반드시 생성자에서 burn 작업이 일어나야 한다.
다음은 ROM과 RAM 메모리를 생성하고 사용하는 사례이다.
ROM의 0번지에서 4번지까지 읽어 RAM 메모리의 0~4번지에 쓰고, 다시 RAM 메모리의 값을 화면에 출력한다.
전체 프로그램을 완성하라.
1
2
3
4
5
6
7
|
char x[5] = {'h', 'e', 'l', 'l', 'o'};
ROM biosROM(1024*10, x, 5); // 10KB의 ROM 메모리. 배열 x로 초기화됨
RAM mainMemory(1024*1024); // 1MB의 ROM 메모리
// 0 번지에서 4번지까지 biosRom에서 읽어 mainMemory에 복사
for(int i=0; i<5; i++) mainMemory.write(i, biosROM.read(i));
for(int i=0; i<5; i++) cout << mainMemory.read(i);
|
실행 결과 :
목적 및 힌트 :
기본 클래스와 파생 클래스로 나누어 응용 작성
코드 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
#include<iostream>
using namespace std;
class BaseMemory{
char *mem;
protected:
BaseMemory(int size) { mem = new char [size]; }
void set_mem(char *x){
mem = x;
}
void put_mem(int i, char copy){
mem[i] = copy;
}
char get_mem(int i){
return mem[i];
}
};
class ROM : public BaseMemory {
public:
ROM(long int mem_size, char *x, int arr_size) : BaseMemory(mem_size) {
set_mem(x);
}
char read(int i){
char mem = get_mem(i);
return mem;
}
};
class RAM : public BaseMemory {
public:
RAM(int mem_size) : BaseMemory(mem_size){;}
void write(int i, char rom_mem){
put_mem(i, rom_mem);
}
char read(int i){
char mem = get_mem(i);
return mem;
}
};
int main() {
char x[5] = {'h', 'e', 'l', 'l', 'o'};
ROM biosROM(1024*10, x, 5); // 10KB의 ROM 메모리. 배열 x로 초기화됨
RAM mainMemory(1024*1024); // 1MB의 ROM 메모리
// 0 번지에서 4번지까지 biosRom에서 읽어 mainMemory에 복사
for(int i=0; i<5; i++) mainMemory.write(i, biosROM.read(i));
for(int i=0; i<5; i++) cout << mainMemory.read(i);
}
|
'C++ programming' 카테고리의 다른 글
명품 C++ programming 실습 문제 8장 9번 (4) | 2020.03.09 |
---|---|
명품 C++ programming 실습 문제 8장 8번 (1) | 2020.03.09 |
명품 C++ programming 실습 문제 8장 6번 (1) | 2020.03.09 |
명품 C++ programming 실습 문제 8장 5번 (1) | 2020.03.09 |
명품 C++ programming 실습 문제 8장 4번 (3) | 2020.03.09 |