1. 문제
6. 실습 문제 5의 문제를 수정해보자. 사용자로부터 다음과 같이 원의 개수를 입력받고, 원의 개수만큼 반지름을 입력받는 방식으로 수정하라. 원의 개수에 따라 동적으로 배열을 할당받아야 한다.
2. 결과
3. 코드
#include <iostream>
using namespace std;
class Circle {
int radius;
public :
void setRadius(int radius);
double getArea();
};
void Circle::setRadius(int radius) {
this->radius = radius;
}
double Circle::getArea() {
return radius * radius * 3.14;
}
int main() {
int num; int r; int count=0;
cout << "원의 개수 >> ";
cin >> num;
Circle *c = new Circle[num];
for(int i=0; i<num; i++) {
cout << "원 " << i+1 << "의 반지름 >> ";
cin >> r;
(c+i)->setRadius(r);
}
for(int i=0; i<num; i++)
if( (c+i)->getArea() > 100 ) count++;
cout << "면적이 100보다 큰 원은 " << count << "개 입니다" << endl;
delete [] c;
}
4. 설명
생성할 원의 개수를 입력받은 후 입력받은 개수만큼 Circle 배열 변수를 동적으로 생성합니다.
그 후 5번에서 구현했던 setRadius()함수로 반지름을 저장합니다.
그 다음 5번처럼 getArea()로 return 받은 값이 100보다 크다면 count++로 넓이가 100이 넘는 원의 개수를 구한 다음 출력 합니다.
※ "(c+i)->"말고 "c[i]."로 멤버함수의 접근하여도 무관 합니다. 단 배열을 동적으로 생성했으므로 delete [] c;로 동적으로 생성한 배열 변수를 해제 해주어야 합니다.
'명품 C++ programming' 카테고리의 다른 글
명품 C++ programming 실습문제 4장 8번 (0) | 2019.04.06 |
---|---|
명품 C++ programming 실습문제 4장 7번 (0) | 2019.04.06 |
명품 C++ programming 실습문제 4장 5번 (0) | 2019.04.06 |
명품 C++ programming 실습문제 4장 4번 (0) | 2019.04.06 |
명품 C++ programming 실습문제 4장 3번 (0) | 2019.04.06 |