1. 문제

 

13. vector를 이용하여 아래 Circle 클래스의 객체를 삽입하고 삭제하는 프로그램을 작성하라. 삭제 시에는 이름이 같은 모든 원을 삭제한다.

 

 

2. 결과

 

 

3. 코드

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

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

int main() {
	vector<Circle*> v;
	vector<Circle*>::iterator it;

	int num, radius;
	string name;
	bool exit = true;

	cout << "원을 삽입하고 삭제하는 프로그램입니다." << endl;
	while (exit) {
		cout << "삽입:1, 삭제:2, 모두보기:3, 종료:4 >> ";
		cin >> num;
		//fflush(stdin);
		while(getchar() != '\n');
		switch (num) {
		case 1:
			cout << "생성하고자 하는 원의 반지름과 이름은 >> ";
			cin >> radius >> name;
			v.push_back(new Circle(radius, name));
			break;
		case 2:
			cout << "삭제하고자 하는 원의 이름은 >> ";
			getline(cin, name);
			it = v.begin();
			while (it != v.end()) {
				Circle *c = *it;
				if (c->getName() == name) {
					it = v.erase(it);
					delete c;
				}
				else
					it++;
			}
			break;
		case 3:
			for (it = v.begin(); it != v.end(); it++)
				cout << (*it)->getName() << endl;
			cout << endl;
			break;
		case 4:
			exit = false;
			break;
		}
	}

}

 

4. 설명

 

vector<Circle*> v;

 

vector<Circle*>::iterator it;

 

로 2개의 변수를 생성합니다.

 

힌트를 보시면 이해하시는데 큰 어려움은 없으실 겁니다.

 

+ Recent posts