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;로 동적으로 생성한 배열 변수를 해제 해주어야 합니다.

+ Recent posts