본문 바로가기
스터디 하드/방통대 컴퓨터과학과

15-2 방통대 C++프로그래밍 과제 문제 및 답안

by 피타칩스 2015. 12. 26.

진짜 별거 아니지만 제가 만든 방통대 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 출력됩니다.



공감♥은 제게 큰 힘이 됩니다. 감사합니다.


댓글