본문 바로가기

프로그램828

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.
C++ 133제] 어서와! C++은 처음이지! CHAPTER 12. PROGRAMMING EXERCISE 1. p514 출처 : 반크_반크 20년 백서 참고풀이]#include  using namespace std; class Shape {    int x, y; public:    Shape(int x, int y) :x(x), y(y) {}    virtual double getArea() = 0; }; class Rect :public Shape {    int s1, s2; public:    Rect(int x, int y, int s1, int s2) :Shape(x, y), s1(s1), s2(s2) {}    double getArea() { return (double)s1 * (double)s2; } }; class Triangle :public Shape {    double width, height; .. 2024. 12. 16.
반응형