본문 바로가기

언어/C++

4장 9번 - 원의 최소면적에 따라 원 분류

#include <iostream>
#include <string>
using namespace std;

/* run this program using the console pauser or add your own getch, system("pause") or input loop */


class Circle{
	int radius;
	string name;
	
public:
	void setCircle(string name, int radius){
		this->name=name;
		this->radius=radius;
	}
	double getArea(){
		return radius*radius*3.14;
	}
	string getName(){
		return name;
	}
	
	
};


class CircleManager{
	Circle *circle;
	int num;
public : 
	CircleManager(){
	}
	CircleManager(int num);
	~CircleManager(){
		delete[] circle;
	}
	void searchByName();
	void searchByArea();
};

CircleManager:: CircleManager(int num){
	
	string name;
	int radius;
	circle= new Circle[num];
	this->num=num;
	
	for(int i=0; i<num; i++){
		cout <<"원 " << i+1 << "의 이름과 반지름 >>" ;
		cin>> name >> radius;
		circle[i].setCircle(name,radius);
	}	
	
	fflush(stdin);
}

void CircleManager:: searchByName(){
	
	string name;
	int n;
	cout << "검색하고자 하는 원의 이름 >> ";
	cin>> name;
	
	for(int i=0; i<num; i++){
		if(circle[i].getName()==name){
			cout << circle[n].getName() << "의 면적은 " << circle[n].getArea() <<endl;	
		}
	}

	
}

void CircleManager:: searchByArea(){
	
	int area;
	cout << "최소 면적을 정수로 입력하세요 >> ";
	cin >> area;
	cout <<area <<"보다 큰 원을 검색합니다." << endl;
	
	for(int i=0; i<num;i ++){
		if(circle[i].getArea() >area ){
			cout << circle[i].getName()<< "의 면적은 "  << circle[i].getArea();
		}
	}
	
}

int main(int argc, char** argv) {
	
	Circle * circle;
	int num;
	string name;
	int area;

	cout<<"원의 개수 >> ";
	cin >> num;
	
	CircleManager cm(num);
	cm.searchByName();
	cm.searchByArea();

	
	return 0;
}