안녕하세요 성조입니다.
오늘은 C++에서 클래스를 이용하여 X자와 *를 출력하는 프로그램을 갖고 왔습니다.
사실 학교에서 1차, 2차 코딩 테스트 때 나왔던 문제인데 풀 때마다 멘붕와서 실제로 시험 볼 때는 틀린 문제네요 ㅠㅠ
(정작 본인이 같이 공부하는 친구 이 문제 못 풀길래 풀어줬는데 본인이 시험 때 못 푼 거는 레전드..ㅎㅎㅎㅎㅎㅎ...)
디버깅 출력 화면입니다.
소스 코드입니다.
#include <iostream> using namespace std; class DrawClass { private: int z=0; char q = 'x'; public: DrawClass(int a) { z = a; }; void draw(); char setFill(char b) { q = b; return q; }; int setSize(int o) { z = o; return z; }; }; void DrawClass::draw() { int k = z; for (int i = 1; i <= z; i++, k--) { for (int j = 1; j <= z; j++) { if (j == i || k == j) cout << q; else cout << " "; } cout << "\n"; } } int main() { DrawClass draw(5); draw.draw(); draw.setFill('*'); draw.setSize(7); draw.draw(); }
메인문에서 DrawCalss를 draw로 정의하고 값을 5 대입하면
class DrawClasss의 생성자인 DarwClass(int a) 부분에 a에 5라는 값이 대입이 된다.
이후 생성자로 private에 선언된 int z=0;의 z값에 a값을 대입해서 초기화한다.
draw 멤버 함수를 void(반환 타입이 필요 없으므로) 생성하는데 x, y 축 중에서 대각선 줄만 표기하기 위해서는 좌측에서 우측 하단으로, 우측에서 좌측 하단으로 총 2가지 조건이 들어간다.
본인의 경우 i, j, k를 이용하여 j와 k값이 i의 값과 맞아떨어지는 경우에 char형으로 저장된 값을 반환했고 아닌 경우에는 공백을 반환했다.
이후 한 라인이 끝날 때마다 개행했다.
다시 메인문으로 돌아가면 setFill 부분에서 x를 나타냈던 것을 *로 바꿔서 반환받고, setSize로 draw 멤버 함수에서 출력될 크기를 정의했다.
문풀은 이 정도가 끝인 것 같습니다.
정말 ㅠ 눈물 나는 문제.. 나름 쉽게 풀었고 앞으로 시험 문제에 나오면 쉽게 풀겠지 ㅎㅎ 했는데 시험 당일 멘붕 시간초에 멘붕오지 않도록 훈련을 해야 하는데 저는 시간을 규제하면 늘 약해지는 모습이 보이는 것 같아요 ㅠ
앞으로 시간 제약 중에도 본 실력이 떨어지지 않고 잘 나올 수 있도록 노력하고 더 공부해야겠어요
그럼 다음 포스팅 때 뵙겠습니다!
'C, C++ > C++' 카테고리의 다른 글
C++ *로 X자 패턴 표현하기 (0) | 2020.12.18 |
---|---|
명품 C++ Programming 2판 연습문제 3장 이론문제 개인 풀이 (5) | 2020.10.23 |
명품 C++ Programming 2판 연습문제 2장 실습문제 개인 풀이 (2) | 2020.10.15 |
명품 C++ Programming 연습문제 2장 이론문제 개인 풀이 (6) | 2020.10.14 |
명품 C++ Programming 연습문제 1장 (실습문제)개인 풀이 및 개인 해설 (0) | 2020.10.13 |