본문 바로가기

프로그램865

C언어 203제] 인터프리터(Interpreter) 출처 : 반크_백제역사 유적지구 및 이스탐블역사 유적지구 문제]어떤 컴퓨터에 열 개의 레지스터와 1,000워드 분량의 램(RAM)이 있다. 각 레지스터 또는 램 위치에는 0 이상 999 이하의 세 자리 정수가 저장된다. 명령어는 세 자리 정수로 인코딩되며 램에 저장된다. 인코딩은 다음과 같다. 100종료2dnd레지스터를 n으로 설정(0이상 9이하) 3dnd레지스터에  n을  더함.4dnd레지스터를에  n을 곱함.5dsd레지스터를  s레지스터의 값으로 설정.6dss 레지스터의 값을 d레지스터에 덤함.7dsd 레지스터에 s레지스터의 값을 곱함. 8dad레지스터를 a레지스터에 저장된 주소의 램에 들어있는 값으로 설정.9daa레지스터에 저장된 주소의 램에 s레지스터의 값을 대입0dss레지스터에 0이 들어있지 않.. 2024. 12. 25.
C언어 202제] 그래픽 편집기(Graphical Editor) 출처 : 반크_백제역사 유적지구 및 이스탐블역사 유적지구 문제]포토샵 같은 그래픽 편집기를 이용하면 텍스트 편집기에서 문서를 수정하는 것처럼 비트맵 이미지를 수정할 수 있다. 이미지는 픽셀로 이루어진 M × N 배열로 표현되며 각 픽셀마다 색이 주어진다. 간단한 대화형 그래픽 편집기 흉내를 낼 수 있는 프로그램을 만들어보자. 입력 입력은 한 줄에 하나씩의 편집기 명령으로 구성된다. 각 명령은 줄 맨 앞에 잇는 대문자 한 개로 표현된다. 매개변수가 필요한 경우에는 그 명령과 같은 줄에 스페이스로 분리되어 매개변수가 입력된다. 픽셀 좌표는 1 이상 M 이하의 열 번호와 1 이상 N 이하의 행 번호, 이렇게 두 개의 정수로 푠현되며 이때 1편집기에서 받아륻이는 명령은 다음과 같다.I M N모든 픽셀이 흰색(O.. 2024. 12. 24.
C++ 138제] 어서와! C++은 처음이지! CHAPTER 13. 도전문제 p544 출처 : 반크_반크 20년 백서 참고풀이]#define _CRT_SECURE_NO_WARNINGS #include  #include  #include  #include  #include  using namespace std; int main() {    int i;    char ch;    vector words;    ifstream infile("words.txt");    while (infile)    {       string word;       infile >> word;       words.push_back(word);    }    while (true)    {       string r = words[rand() % words.size()];       //선택된 단어의 길이 만큼.. 2024. 12. 23.
C언어 201제] LCD 디스플레이(LCD Display) 출처 : 반크_백제역사 유적지구 및 이스탐블역사 유적지구 문제]한 친구가 방금 새 컴퓨터를 샀다. 그 친구가 지금까지 샀던 가장 강력한 컴퓨터는 공학용 전자 계산기였다. 그런데 그 친구는 새 컴퓨터의 모니터보다 공학용 계산기에 있는 LCD 디스플레이가 더 좋다며 크게 실망하고 말았다. 그 친구를 만족시킬 수 있도록 숫자를 LCD 디스플레이 방식으로 출력하는 프로그램을 만들어보자. 입력 입력 파일은 여러 줄로 구성되며 표시될 각각의 숫자마다 한 줄씩 입력된다. 각 줄에는 s와 n이라는 두 개의 정수가 들어있으며 n은 출력될 숫자(0출력 입력 파일에서 지정한 숫자를 수평 방향은 '-' 기호를, 수직 방향은 '|'를 이용해서 LCD 디스플레이 형태로 출력한다. 각 숫자는 정확하게 s+2개의 열, 2s+3개의 .. 2024. 12. 20.
C언어 200제] 여행(The Trip) 출처 : 반크_백제역사 유적지구 및 이스탐블역사 유적지구 문제]일년에 한 번씩 다른 여행지로 여행을 가는 학생 모임이 있다. 그 학생들은 지금까지 인디애나폴리스, 피닉스, 내시빌, 필라델피아, 산호세, 아틀란타를 여행했다. 이번 봄에는 아인트호벤으로 여행을 갈 계획이다. 이 학생들은 여행 경비를 모두 똑같이 부담하기로 합의했지만 돈을 쓸 때마다 나눠서 내는 것은 별로 실용적이지 못하다. 그래서 한 명씩 식비, 호텔비, 택시비, 비행기표를 부담하기로 한다. 여행이 끝난 후에 각 학생이 지출한 내역을 계산한 다음 1센트 단위 내에서 모든 학생들이 쓴 돈이 같도록 돈을 주고 받는다. 하지만 이전 여행의 경험에 비추어보면 돈을 주고 받는 과정은 정말 지루하고 오랜 시간을 요하는 작업이었다. 지출 내역이 주어졌을.. 2024. 12. 20.
C언어 199제] 지뢰 찾기(Minesweeper) 출처 : 반크_백제역사 유적지구 및 이스탐블역사 유적지구 문제]지뢰 찾기를 해본 적이 있는 독자들이 많을 것이다. 이름은 잘 기억나지 않지만 어떤 운영체제에 이 작고 귀여운 게임이 깔려있다. 지뢰 찾기는 M X N 크기의 지뢰밭에서 모든 지뢰의 의치를 찾아내는 게임이다. 이 게임에서는 각 칸에 인접한 칸에 몇 개의 지뢰가 있는지를 보여준다. 각 칸에는 최대 여덟 개의 인접한 칸이 있을 수 있다. 아래에서 왼쪽에 있는 4X4 지뢰밭에는 지뢰 두 개가 있으며 각각은 '*' 문자로 표시되어 있다. 이 지뢰밭을 방금 설명한 힌트 숫자로 표기하면 오른쪽에 있는 것과 같은 필드가 만들어진다. * . . .       * 1 0 0 . . . .       2 2 1 0 . * . .      1 * 1 0 . . .. 2024. 12. 19.
콜라츠 수열(콜라츠 추측) 콜라츠 추측(Collatz conjecture)은 1937년에 처음으로 이 추측을 제기한 로타르 콜라츠의 이름을 딴 것으로 3n+1 추측, 울람 추측, 혹은 헤일스톤(우박) 수열 등 여러 이름으로 불린다. 콜라츠 추측은 임의의 자연수가 다음 조작을 거쳐 항상 1이 된다는 추측이다. 1. 짝수라면 2로 나눈다. 2. 홀수라면 3을 곱하고 1을 더한다. 3. 1이면 조작을 멈추고, 1이 아니면 첫 번째 단계로 돌아간다. 예를 들어, 6에서 시작한다면, 차례로 6, 3, 10, 5, 16, 8, 4, 2, 1 이 된다. 또, 27에서 시작하면 무려 111번을 거쳐야 1이 된다. 77번째에 이르면 9232를 정점으로 도달하다가 급격히 감소하여 34단계를 더 지나면 1이 된다.  이 추측은 컴퓨터로 2^68까지 .. 2024. 12. 17.
C언어 198제] 3n+1 문제(The 3n+1 Porblem) 출처 : 반크_백제역사 유적지구와 이스탐블역사 유적지구 문제]어떤 수열을 만들어내는 다음과 같은 알고리즘을 생각해보자. 어떤 정수 n에서 시작해 n이 짝수면 2로 나누고, 홀수면 3을 곱한 다음 1을 더한다. 이렇게 해서 새로 만들어진 숫자를 n으로 놓고 n=1이 될 때까지 같은 작업을 계속 반복한다. 예를 들어 n=22이면 다음과 같은 수열이 만들어 진다.22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 아직 증명되진 않았지만 모든 정수 n에 대해 이 알고리즘을 적용시키면 결국에는 n=1에 이르게 되는 것으로 추측된다. 그리고 이 가설은 적어도 1,000,000까지의 정수에 대해서는 참이다.n이라는 값이 입력되었을 때 1이 나올 때까지 만들어진 수의 개수(1 포함)를 n개의 .. 2024. 12. 17.
C++ 137제] 어서와! C++은 처음이지! CHAPTER 12. PROGRAMMING EXERCISE 5. p515 출처 : 반크_반크 20년 백서 참고풀이]#include  #include  using namespace std; class Animal { public:    virtual void speak() = 0;    virtual ~Animal(){} }; class Dog :public Animal { public:    virtual void speak() { cout }; class Cat :public Animal { public:    void speak() { cout }; int main() {    vector Barn;    Dog d1;    Cat c1;    Cat c2;    Animal* a1 = &d1;    Animal* a2 = &c1;    Animal* a3 = &c2; .. 2024. 12. 16.
C++ 136제] 어서와! C++은 처음이지! CHAPTER 12. PROGRAMMING EXERCISE 4. p515 출처 : 반크_반크 20년 백서 참고풀이]#include  using namespace std; class GameCharactere { public:    GameCharactere() {}    virtual void draw() = 0; }; class Hobbit :public GameCharactere { public:    Hobbit() :GameCharactere() {}    void draw() { cout }; class Sorcerer :public GameCharactere { public:    Sorcerer():GameCharactere(){}    void draw() { cout }; int main() {    int i;    GameCharactere* game[3].. 2024. 12. 16.
C++ 135제] 어서와! C++은 처음이지! CHAPTER 12. PROGRAMMING EXERCISE 3. p514 출처 : 반크_반크 20년 백서 참고풀이]#include  using namespace std; class HomeAppliance {    int price; public:    HomeAppliance(double p) :price(p) {}    double getprice() { return price; }    virtual double getPrice() = 0;    virtual void Print() = 0; }; class Television :public HomeAppliance {    double sale; public:    Television(double p) :HomeAppliance(p) { sale = 0.9; }    double getPrice() { return ge.. 2024. 12. 16.
C++ 134제] 어서와! C++은 처음이지! CHAPTER 12. PROGRAMMING EXERCISE 2. p514 출처 : 반크_반크 20년 백서 참고풀이]#include  using namespace std; class Weapon { public:    virtual void load() = 0; }; class Bomb :public Weapon { public:    void load()    {       cout    } }; class Gun :public Weapon { public:    void load()    {       cout    } }; int main() {    int i;    Weapon* we[3] = { NULL };    we[0] = new Gun;    we[1] = new Bomb;    we[2] = new Bomb;    for (i = 0;i       we[i].. 2024. 12. 16.
반응형