C++
[강의] 10월 4일 수업정리
k-codestudy
2024. 10. 5. 03:03
오늘은 프로토타입 만들기에 대한 연습을 하였다.
문제 1: 세 개의 int형 숫자의 총합을 구하는 함수
void sumNumber(int nData1, int nData2, int nData3, int* pResult);
문제 2: int형 숫자를 입력받아 약수의 개수를 구하는 함수
void measureCount(int nData, int* pMeasureCount);
문제 3: 두 개의 int형 데이터를 교환하는 함수
void swapNumber(int nData1, int nData2, int* pData1, int* pData2);
문제 4: float형 삼각형의 세 변 길이로 넓이를 구하는 함수
void triangleArea(float fData1, float fData2, float fData3, float* pTriangleArea);
문제 5: float형 반지름을 입력받아 원의 넓이를 구하는 함수
void circleArea(float fRadius, float* pCircleArae);
문제 6: 타원의 두 중점 좌표를 입력받아 넓이를 구하는 함수
void ellipseArea(int nCoordinateX1, int nCoordinateY1, int nCoordinateX2, int nCoordinateY2, int* pEllipseArea);
문제 7: int형 배열의 평균을 구하는 함수
void arrayAverage(const int* pData, int nLength, int* pAverage);
문제 8: int형 배열에서 특정 숫자의 개수를 구하는 함수
void arrayNumberCount(const int* pData, int nLength, int nNumber, int* pNumberCount);
문제 9: int형 배열을 다른 배열에 복사하는 함수
void copyArray(const int* pSrc, int nSrcLength, int* pDst, int nDstLength);
문제 10: 배열을 정렬하는 함수
void chastityArray(const int* pSrc, int nSrcLength, int* pDst, int nDstLength);
프로토타입을 작성할 때, 가장 중요하게 생각한 게 다른 사람들이 쉽게 이해할 수 있도록 함수가 어떤 상황에서 사용되는지를 명확하게 알 수 있게끔 작성을 하였다.
문제 3, 문제 10번의 경우, 프로토타입을 작성할 때 두 가지 방식으로 작성이 가능하다.
- 첫 번째는 원본 데이터를 보장하는 방식 ( 위에 작성한 코드가 원본 데이터를 보장하도록 작성한 것이다.)
- 두 번째는 포인터 두 개를 이용하여 입출력을 겸용하는 방식으로 코드를 작성할 수 있다. 이때, 원본 데이터를 따로 백업하지 않으면 보장하지 않을 수 있으며, 이는 사용자의 의도에 따라 달라진다.
문제 10번의 경우 함수에서 배열을 다룰 때는 반드시 저장공간을 할당해 주고 그 공간에 값을 넣어서 반환받는 개념을 이해해야 한다. 기본적으로 포인터로 배열을 넘기는 것은 불가능하기에 저장공간을 먼저 마련한 후 그 공간에 값을 채워 넣는 방식으로 구현해야 한다.
문제 9번의 경우 함수 자체에서 문제가 발생할 수 있다. 하지만 그 부분은 아직 배우지 않았기에 나중에 기회가 된다면 추가 설명을 하겠다