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개의 변수를 생성합니다.
힌트를 보시면 이해하시는데 큰 어려움은 없으실 겁니다.
'명품 C++ programming' 카테고리의 다른 글
명품 C++ programming 11장 Open Challenge (0) | 2019.05.14 |
---|---|
명품 C++ programming 실습문제 10장 14번 (0) | 2019.05.14 |
명품 C++ programming 실습문제 10장 12번 (0) | 2019.05.13 |
명품 C++ programming 실습문제 10장 11번 (0) | 2019.05.13 |
명품 C++ programming 실습문제 10장 10번 (0) | 2019.05.12 |