명품 C++ programming 실습 문제 11장 4번

문제 : 한 줄에 ‘영어문장;한글문자’ 형식으로 키 입력될 때, cin.ignore()를 이용하여 ‘;‘이전에 입력된 문자열만 출력하는 프로그램을 작성하라. 아래에서 ^Z(ctrl-z) 키는 입력 종료를 나타내는 키이며, cin.get()은 EOF를 리턴한다. 실행 결과 : 목적 및 힌트 : cin.get(), EOF, cin.ignore() 활용 코드 : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include using namespace std; int main() { int ch; while( (ch = cin.get()) != EOF ) { if(ch == ‘;’){ cout.put(’\n’); cin.ignore(100, ‘\n’); } else cout.put(ch); } } 설명 : ...

2020년 3월 27일 · 1 분 · Sobamemil

명품 C++ programming 실습 문제 11장 3번

문제 : 한 줄에 ‘영어문장;한글문자’ 형식으로 키 입력될 때, cin.ignore()를 이용하여 ‘;’ 이후에 입력된 문자열을 화면에 출력하는 프로그램을 작성하라. 아래에서 ^Z(ctrl-z) 키는 입력 종료는 나타내는 키이며, cin.get()은 EOF를 리턴한다. 실행 결과 : 목적 및 힌트 : cin.get(), EOF, cin.ignore() 활용 코드 : 1 2 3 4 5 6 7 8 9 10 11 12 #include using namespace std; int main() { int ch; cin.ignore(100, ‘;’); // 영어 문장이 최대 99개의 문자로 입력된다고 가정한다. while((ch=cin.get()) != EOF) { cout.put(ch); if(ch == ‘\n’) cin.ignore(100, ‘;’); // 영어 문장이 최대 99개의 문자로 입력된다고 가정한다. } } 설명 : ...

2020년 3월 27일 · 2 분 · Sobamemil

명품 C++ programming 실습 문제 11장 2번

문제 : istream& get(char& ch) 함수를 이용하여 한 라인을 읽고 빈칸(’ ‘)이 몇 개인지 출력하는 프로그램을 작성하라. 실행 결과 : 목적 및 힌트 : cin으로 키 입력 연습 코드 : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include using namespace std; int main() { char ch; int cnt; while(true){ cin.get(ch); // 키를 ch에 읽어옴 if(cin.eof()) // EOF 문자 즉 ctrl-z 키가 입력된 경우, 읽기 종료 break; if(ch == ‘\n’) // 키가 입력된 경우 읽기 중단 break; else if(ch == ’ ‘) cnt++; } cout « cnt; } 공유하기 ...

2020년 3월 27일 · 1 분 · Sobamemil

명품 C++ programming 실습 문제 11장 1번

문제 : int cin.get() 함수를 이용하여 키보드로부터 한 라인을 읽고 ‘a’가 몇 개인지 출력하는 프로그램을 작성하라. 실행 결과 : 목적 및 힌트 : cin으로 키 입력 연습 코드 : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include using namespace std; int main() { int a; int cnt=0; while( (a = cin.get() ) != EOF ){ if(a == ‘a’) cnt++; else if(a == ‘\n’) break; } cout « cnt; } 설명 : ...

2020년 3월 27일 · 1 분 · Sobamemil

시스템 프로그래밍 프로젝트 #7 최종 (Assembler in C)

문제 : 지금까지의 프로젝트를 참고하여 2 pass assembler를 만들면 됩니다. 먼저 어셈블러(Assembler)란? 하드웨어가 직접 이해하여 실행하는 기계어는 일반적으로 비트 열 또는 16진수로 표현되기 때문에 인간이 이해하기 어렵다. 그래서 인간이 이해하기 쉽도록 기계어와 거의 일대일로 대응하는 기호로 표현된 언어로 어셈블러 언어가 있으며, 어셈블러 언어를 기계어로 번역하는 프로그램을 어셈블러, 번역하는 것을 어셈블이라고 합니다. 어셈블러의 역할을 그림으로 간단하게 나타내 보면 다음과 같습니다. 이 글에서 구현 할 2 패스 어셈블러의 알고리즘을 보겠습니다. pass 1 : ...

2020년 3월 19일 · 7 분 · Sobamemil

합병 정렬(Merge Sort) 알고리즘

합병 정렬(Merge Sort)이란? 분할 정복 알고리즘(=Divide and conquer algorithm 즉, 그대로 해결할 수 없는 문제를 작은 문제로 분할하여 문제를 해결하는 방법이나 알고리즘입니다.)의 하나로 O(n log n)의 시간 복잡도를 가지고 있습니다. 합병 정렬의 작동 알고리즘은 아래와 같습니다. 리스트의 길이가 1 이하이면 이미 정렬된 것으로 본다. 그렇지 않은 경우에는 분할(divide) : 정렬되지 않은 리스트를 절반으로 잘라 비슷한 크기의 두 부분 리스트로 나눈다. 정복(conquer) : 각 부분 리스트를 재귀적으로 합병 정렬을 이용해 정렬한다. 결합(combine) : 두 부분 리스트를 다시 하나의 정렬된 리스트로 합병한다. 이때 정렬 결과가 임시배열에 저장된다. 복사(copy) : 임시 배열에 저장된 결과를 원래 배열에 복사한다. 이해가 잘 안간다면 아래 애니메이션을 통해 작동 원리를 쉽게 이해할 수 있습니다. ...

2020년 3월 18일 · 3 분 · Sobamemil

명품 C++ programming 실습 문제 10장 16번

문제 : vector<Shape*> v;를 이용하여 간단한 그래픽 편집기를 콘솔 바탕으로 만들어보자. 생성된 도형 객체를 v에 삽입하고 관리하라. 9장 실습 문제 10번의 힌트를 참고하라. Shape과 Circle, Line, Rect 클래스는 다음과 같다. 2019/11/26 - [C++/명품 C++ programming] - 명품 C++ programming 실습 문제 9장 10번 [명품 C++ programming 실습 문제 9장 10번 문제 : 간단한 그래픽 편집기를 콘솔 바탕으로 만들어보자. 그래픽 편집기의 기능은 “삽입”, “삭제”, “모두보기”, “종료” 의 4가지이고, 실행 과정은 다음과 같다. 목적 및 힌트 : 추상 클래스, 상속 종합 응용 S.. ...

2020년 3월 11일 · 3 분 · Sobamemil

명품 C++ programming 실습 문제 10장 15번

문제 : vector를 이용하여 아래 Circle 클래스의 객체를 삽입하고 삭제하는 프로그램을 작성하라. 삭제 시에는 이름이 같은 모든 원을 삭제한다. 1 2 3 4 5 6 7 8 9 10 class Circle { string name; // 이름 int radius; // 반지름 public: Circle(int radius, string name) { this->radius = radius; this->name = name; } double getArea() { return 3.14*radius*radius; } string getName() { return name; } }; 실행 결과 : ...

2020년 3월 11일 · 2 분 · Sobamemil

명품 C++ programming 실습 문제 10장 14번

문제 : 암호 관리 응용프로그램을 map을 이용하여 작성하라. 실행 과정은 다음과 같다. 실행 결과 : 목적 및 힌트 : map 컨테이너에 삽입 및 조회 응용 이름과 점수를 쌍으로 저장할 맵 컨테이너로 map<string, string>을 이용하면 됩니다. 아래 링크에 있는 실습 문제 10장 13번을 참고하세요. 2020/03/11 - [C++/명품 C++ programming] - 명품 C++ programming 실습 문제 10장 13번 [명품 C++ programming 실습 문제 10장 13번 문제 : map 컨테이너를 이용하여 (이름, 성적)을 저장하고 이름으로 성적을 조회하는 점수 관리 프로그램을 만들어라. 이름은 빈칸 없이 입력하는 것을 원칙으로 한다. 실행 결과 : 목적 및 힌트 : map 컨테이너.. ...

2020년 3월 11일 · 2 분 · Sobamemil

명품 C++ programming 실습 문제 10장 13번

문제 : map 컨테이너를 이용하여 (이름, 성적)을 저장하고 이름으로 성적을 조회하는 점수 관리 프로그램을 만들어라. 이름은 빈칸 없이 입력하는 것을 원칙으로 한다. 실행 결과 : 목적 및 힌트 : map 컨테이너 활용 이름과 점수를 쌍으로 저장할 맵 컨테이너로 map<string, int>를 이용하면 된다. 코드 : 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 #include #include #include using namespace std; int main() { map<string, int> Score; // map 컨테이너 생성. 키는 한글 이름, 값은 정수 점수 cout « “***** 점수관리 프로그램 HIGH SCORE을 시작합니다 *****\n”; while(true){ int num; int score; string name; cout « “입력:1, 조회:2, 종료:3 » “; cin » num; switch (num){ case 1: cout « “이름과 점수» “; cin » name » score; Score.insert(make_pair(name, score)); // map에 저장 break; case 2: cout « “이름 » “; cin » name; if(Score.find(name) == Score.end()) // name ‘키’를 끝까지 찾았는데 없음 cout « “없음” « endl; else cout « name « “의 점수는 " «Score[name] « endl; // Score에서 name의 값을 찾아 출력 break; case 3: cout « “프로그램을 종료합니다…\n”; return 0; default : cout « “제대로 입력해\n”; break; } } } 설명 : ...

2020년 3월 11일 · 2 분 · Sobamemil