본문 바로가기

언어/C++

원의 개수 와 면적 구하기

#include <iostream>
#include <string>
#include<stdio.h>
#include <stdlib.h>

using namespace std;

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 *p;
	int size;
	public : 
	
	CircleManager(){
	}
	CircleManager(int size);
	
	~CircleManager(){
		delete[] p;
	}
	
	void searchByName();
	void searchByArea(); 
	
};

CircleManager :: CircleManager(int size){
	
	
	string n,r;
	p=new Circle[size];
	this->size=size;

	for(int i=0; i<size;i ++){
		
	 cout << "원 " << i+1 << "의 이름과 반지름 >> ";
	 cin >> n >> r;
	p[i].setCircle(n,atoi(r.c_str()));
	}
	fflush(stdin);
	
}


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

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

int main(int argc, char** argv) {
	
	int n;
	cout<<"원의 개수>> ";
	cin>> n;
	CircleManager cm(n);
	cm.searchByName();
	cm.searchByArea();

	
	return 0;
}

'언어 > C++' 카테고리의 다른 글

5단원 실습문제 (참조, 복사생성자 )  (1) 2019.11.12
복사생성자  (0) 2019.11.12
함수와 참조  (0) 2019.11.12
히스토그램  (0) 2019.11.11
전화번호 부  (0) 2019.11.11