진짜 별거 아니지만 제가 만든 방통대 C++ 프로그래밍 과제 답안을 공유합니다.
제가 공유할 수 있는 이유는... 다행히 과제물점수에서 만점을 받았기 때문이죠. ㅎㅎ 점수가 깎였다면 부끄러워서 못 올렸을거 같네요.
제가 한 과제는 2015년 2학기 C++ 과제라서 2016년, 2017년, 또 그 이후에 똑같은 문제는 나오지 않을겁니다. 방통대 교수님들은 부지런하시니까요.
그래서 이 과제를 복붙해서 제출하는 건 불가능한 일일겁니다. 하지만 어떤 형식으로 C++ 과제물을 제출해야하는지, 어느정도로 제출하면 감점을 피할 수 있는지 참고할 수 있으리라 생각됩니다.
우선 문제입니다.
요구사항이 많아 보이지만, 과제에서 요구하는 건 딱 세가지입니다. Triangle.h, Triangle.cpp 파일과, 클래스설계에 대한 설명 텍스트 총 3가지를 제출해야 했습니다. Triangle.h의 내용을 Triangle.cpp에 넣으실 분들은 두가지만 씨디에 넣어서 제출하면 되겠네요.
1. 일단 Triangle.h 파일의 내용입니다.
#ifndef TRIANGLE_H_INCLUDED
#define TRIANGLE_H_INCLUDED
#include <iostream>
#include "math.h"
using namespace std;
class Triangle {
private:
double x1, y1, x2, y2, x3, y3;
public:
Triangle(const double v[3][2]);
void move(double dx, double dy);
void scale(double sx, double sy);
void area() const;
};
// 세 개의 꼭짓점 좌표를 매개변수로 받아 삼각형 객체를 생성한다.
Triangle::Triangle(const double v[3][2])
{
x1 = v[0][0]; y1 = v[0][1];
x2 = v[1][0]; y2 = v[1][1];
x3 = v[2][0]; y3 = v[2][1];
cout << "다음을 세 꼭지점으로 하는 삼각형 객체 생성: ";
cout << '(' << x1 << ", " << y1 << ") - " << '(' << x2 << ", " << y2 << ") - " << '(' << x3 << ", " << y3 << ')';
cout << endl << endl;
}
//삼각형을 x축으로 dx, y축으로 dy만큼 이동할 수 있다.
void Triangle::move(double dx, double dy)
{
x1 += dx; y1 += dy;
x2 += dx; y2 += dy;
x3 += dx; y3 += dy;
cout << "이동 후의 삼각형: ";
cout << '(' << x1 << ", " << y1 << ") - " << '(' << x2 << ", " << y2 << ") - " << '(' << x3 << ", " << y3 << ')';
cout << endl << endl;
}
// 삼각형을 x축 방향으로 sx배, y축 방향으로 sy배 크기조정을 할 수 있다.
void Triangle::scale(double sx, double sy)
{
x1 *= sx; y1 *= sy;
x2 *= sx; y2 *= sy;
x3 *= sx; y3 *= sy;
cout << "크기조정 후 삼각형: ";
cout << '(' << x1 << ", " << y1 << ") - " << '(' << x2 << ", " << y2 << ") - " << '(' << x3 << ", " << y3 << ')';
cout << endl << endl;
}
// 삼각형의 면적을 구할 수 있다.
void Triangle::area() const
{
double tArea = 0.5 * abs((x1 - x2) * y3 + (x2 - x3) * y1 + (x3 - x1) * y2);
cout << "삼각형의 면적: " << tArea << endl << endl;
}
#endif
2. 다음은 Triangle.cpp 파일의 내용입니다.
#include <iostream>
#include "Triangle.h"
using namespace std;
int main()
{
double vertex[3][2];
double moveX, moveY;
double scaleX, scaleY;
// 사용자로부터 삼각형 세 꼭지점의 좌표를 입력받아 삼각형 객체생성
cout << "삼각형 제 1 꼭지점의 x좌표 입력: "; cin >> vertex[0][0];
cout << "삼각형 제 1 꼭지점의 y좌표 입력: "; cin >> vertex[0][1];
cout << endl;
cout << "삼각형 제 2 꼭지점의 x좌표 입력: "; cin >> vertex[1][0];
cout << "삼각형 제 2 꼭지점의 y좌표 입력: "; cin >> vertex[1][1];
cout << endl;
cout << "삼각형 제 3 꼭지점의 x좌표 입력: "; cin >> vertex[2][0];
cout << "삼각형 제 3 꼭지점의 y좌표 입력: "; cin >> vertex[2][1];
Triangle Tri1(vertex);
//이동하기
cout << "x축 방향으로 얼만큼 이동할까요? "; cin >> moveX;
cout << "y축 방향으로 얼만큼 이동할까요? "; cin >> moveY;
Tri1.move(moveX, moveY);
//크기조정
cout << "x축 방향 크기조정: "; cin >> scaleX;
cout << "x축 방향 크기조정: "; cin >> scaleY;
Tri1.scale(scaleX, scaleY);
//넓이구하기
Tri1.area();
return 0;
}
3. 마지막으로 클래스 설계에 대한 설명입니다.
클래스 설계에 대한 설명은 교수님이 지정해놓은대로 방통대 교재 p112에 나와있는 것과 유사하게 작성하면 됩니다. 저는 별로 설명할 게 없어보이는데 설명을 쥐어짜내느라 조금 힘들었습니다.
<Triangle클래스의 설계>
1. 클래스의 멤버함수 및 용도
2. 클래스의 데이터멤버 및 용도
3. 클래스 멤버함수 각각에 대한 추가적 설명
1) 함수의 원형: Triangle(const double v[3][2])
- 이 함수는 생성자입니다.
- 매개변수의 자료형: double형을 요소로 갖는 3 x 2의 2차원 배열 (배열에 총 6개의 요소가 담김)
- 매개변수의 용도: 형식매개변수 v[3][2] 의 값들은 차례로 Triangle 클래스의 데이터멤버인 x1, y1, x2, y2, x3, y3의 값을 할당하는 데 사용됩니다.
- 생성자는 반환자료형이 표현되지 않습니다.
2) 함수 원형: void move(double dx, double dy)
- 매개변수의 자료형: 2개의 매개변수 모두 double형
- 매개변수의 용도: Triangle 클래스의 데이터멤버인x1, y1, x2, y2, x3, y3의 값을 각각 dx, dy만큼 이동시키는데에 사용됩니다. (x들은 dx만큼 이동, y들은 dy만큼 이동)
- 반환형은 void로 반환되는 값은 없습니다. 다만, move 메소드 내부에 dx, dy만큼 이동한 결과를 cout 출력하는 부분이 있기 때문에 커맨드 창에는 이동 후의 세 꼭지점 좌표가 출력됩니다.
3) 함수 원형: void scale(double sx, double sy)
- 매개변수의 자료형: 2개의 매개변수 모두 double형
- 매개변수의 용도: Triangle 클래스의 데이터멤버인 x1, y1, x2, y2, x3, y3의 값을 각각 sx, sy배 늘리는 데에 사용됩니다. (x들은 sx배 커지고, y들은 sy배 커짐)
- 반환형은 void로 반환되는 값은 없습니다. 다만, scale 메소드 내부에 sx, xy배 만큼 크기조정한 결과를 cout 출력하는 부분이 있기 때문에 커맨드 창에는 크기조정 후의 세 꼭지점 좌표가 출력됩니다.
4) 함수 원형: void area() const
- 매개변수의 자료형 및 용도: 매개변수가 없습니다.
- Triangle 객체의 데이터멤버 값의 변화가 없으므로 안전을 위해 const를 붙입니다.
- 반환형은 void로 반환되는 값은 없습니다. 다만, 면적을 계산한 결과가 cout 출력됩니다.
공감♥은 제게 큰 힘이 됩니다. 감사합니다.
'스터디 하드 > 방통대 컴퓨터과학과' 카테고리의 다른 글
2016년 방통대 등록금: 문과 34만원, 이과 37만원 (0) | 2016.01.11 |
---|---|
2015년 2학기 방통대 학점 나왔습니다~ (13) | 2015.12.31 |
방통대 첫 기말고사 보고 왔습니다. (1) | 2015.12.15 |
15-2 방통대 컴퓨터과학과 JSP프로그래밍 수강 후기 (2) | 2015.12.14 |
15-2 방통대 컴퓨터과학과 컴퓨터구조론 수강후기 (0) | 2015.12.13 |
댓글