#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cctype>
#include <cstring>
#include <string>
#include <ctime>
using namespace std;
//예제 4-1
/*
class Circle{
int radius;
public:
Circle() {radius = 1;}
Circle(int r) {radius = r; }
double getArea();
};
double Circle::getArea(){
return 3.14*radius*radius;
}
int main(){
Circle donut;
Circle pizza(30);
cout << donut.getArea() << endl;
Circle *p;
p = &donut;
cout << p->getArea() << endl;
cout << (*p).getArea() << endl;
p = &pizza;
cout << p->getArea() << endl;
cout << (*p).getArea() << endl;
}
*/
//예제4-2
/*
class Circle{
int radius;
public:
Circle() {radius = 1; }
Circle(int r) { radius = r; }
void setRadius(int r) { radius = r; }
double getArea();
};
double Circle::getArea(){
return 3.14*radius*radius;
}
int main() {
Circle circleArray[3];
circleArray[0].setRadius(10);
circleArray[1].setRadius(20);
circleArray[2].setRadius(30);
for(int i=0; i<3; i++)
cout << "Circle " << i << "의 면적은" << circleArray[i].getArea() << endl;
Circle *p;
p = circleArray;
for(int i=0; i<3; i++){
cout << "Circle " << i << "의 면적은 "<< p->getArea() << endl;
p++;
}
}
*/
//예제 4-3
/*
class Circle{
int radius;
public:
Circle() {radius = 1;}
Circle(int r) {radius = r;}
void setRadius(int r){ radius = r; }
double getArea();
};
double Circle::getArea() {
return 3.14*radius*radius;
}
int main() {
Circle circleArray[3] = { Circle(10), Circle(20), Circle()};
for(int i=0; i<3; i++)
cout << "Circle " << i << "의 면적은 "<< circleArray[i].getArea() << endl;
}
*/
//예제 4-4
/*
class Circle{
int radius;
public:
Circle() { radius = 1;}
Circle(int r) { radius = r; }
void setRadius(int r) {radius = r; }
double getArea();
};
double Circle::getArea() {
return 3.14*radius*radius;
}
int main(){
Circle circle[2][3];
circle[0][0].setRadius(1);
circle[0][1].setRadius(2);
circle[0][2].setRadius(3);
circle[1][0].setRadius(4);
circle[1][1].setRadius(5);
circle[1][2].setRadius(6);
for(int i=0; i<2; i++)
for(int j=0; j<3; j++) {
cout << "Circle [" << i << "," << j << "]의 면적은 ";
cout << circle[i][j].getArea() <<endl;
}
}
*/
//예제 4-5
/*
int main() {
int *p;
p= new int;
if(!p) {
cout << "메모리를 할당할 수 없습니다. ";
return 0;
}
*p = 5;
int n = *p;
cout << "*p = " << *p << endl;
cout << "n = " << n << endl;
delete p;
}
*/
//예제 4-6
/*
int main() {
cout << "입력할 정수의 개수는?";
int n;
cin>> n;
if(n <=0) return 0;
int *p = new int[n];
if(!p){
cout << "메모리를 할당할 수 없습니다.";
return 0;
}
for(int i=0; i<n; i++) {
cout << i+1 << "번째 정수: ";
cin >> p[i];
}
int sum = 0;
for(int i=0; i<n; i++)
sum += p[i];
cout << "평균 = " << sum/n << endl;
delete [] p;
}
*/
//예제 4-7
/*
class Circle {
int radius;
public:
Circle();
Circle(int r);
~Circle();
void setRadius(int r) { radius = r; }
double getArea() {return 3.14*radius*radius; }
};
Circle::Circle(){
radius = 1;
cout << "생성자 실행 radius = " << radius << endl;
}
Circle::Circle(int r){
radius = r;
cout << "생성자 실행 radius = " << radius << endl;
}
Circle::~Circle() {
cout << "소멸자 실행 radius = " << radius << endl;
}
int main() {
Circle *p, *q;
p = new Circle;
q = new Circle(30);
cout << p->getArea() << endl << q->getArea() << endl;
delete p;
delete q;
}
*/
//예제 4-8
/*
class Circle{
int radius;
public:
Circle();
Circle(int r);
~Circle();
void setRadius(int r) { radius = r; }
double getArea() { return 3.14*radius*radius; }
};
Circle::Circle() {
radius = 1;
cout << "생성자 실행 radius = " << radius << endl;
}
Circle::Circle(int r){
radius = r;
cout << "생성자 실행 radius = " << radius << endl;
}
Circle::~Circle(){
cout << "소멸자 실행 radius = " << radius << endl;
}
int main() {
int radius;
while(true){
cout << "정수 반지름을 입력(음수이면 종료)>> ";
cin >> radius;
if(radius < 0) break;
Circle *p = new Circle(radius);
cout << "원의 면적은 " << p->getArea() << endl;
delete p;
}
}
*/
//예제 4-9
/*
class Circle{
int radius;
public:
Circle();
Circle(int r);
~Circle();
void setRadius(int r) { radius = r; }
double getArea() { return 3.14*radius*radius; }
};
Circle::Circle(){
radius = 1;
cout << "생성자 실행 radius = " << radius << endl;
}
Circle::Circle(int r){
radius =r;
cout << "생성자 실행 radius = " << radius << endl;
}
Circle::~Circle(){
cout << "소멸자 실행 radius = " << radius << endl;
}
int main() {
Circle *pArray = new Circle [3];
pArray[0].setRadius(10);
pArray[1].setRadius(20);
pArray[2].setRadius(30);
for(int i=0; i<3; i++){
cout << pArray[i].getArea() << endl;
}
Circle *p = pArray;
for(int i=0; i<3; i++){
cout << p->getArea() << endl;
p++;
}
delete [] pArray;
}
*/
//예제 4-10
/*
class Circle{
int radius;
public:
Circle();
~Circle() {}
void setRadius(int r) { radius = r; }
double getArea() { return 3.14*radius*radius; }
};
Circle::Circle(){
radius = 1;
}
int main() {
cout << "생성하고자 하는 원의 개수?";
int n, radius;
cin >> n;
if(n <= 0) return 0;
Circle *pArray = new Circle [n];
for(int i=0; i<n; i++){
cout << "원" << i+1 << ": ";
cin >> radius;
pArray[i].setRadius(radius);
}
int count = 0;
Circle* p = pArray;
for(int i=0; i<n; i++){
cout << p->getArea() << ' ';
if(p->getArea() >= 100 && p->getArea() <= 200)
count++;
p++;
}
cout << endl << "면적이 100에서 200 사이인 원의 개수는 " << count << endl;
delete [] pArray;
}
*/
//예제 4-11
/*
int main() {
string str;
string address("서울시 성북구 삼선동 389");
string copyAddress(address);
char text[] = {'L', 'O', 'V', 'E', ' ', 'C', '+', '+', '/0'};
string title(text);
cout << str << endl;
cout << address << endl;
cout << copyAddress << endl;
cout << title << endl;
}
*/
//예제 4-12
/*
int main() {
string names[5];
for(int i=0; i<5; i++){
cout << "이름 >> ";
getline(cin, names[i], '\n');
}
string latter = names[0];
for(int i=1; i<5; i++){
if(latter < names[i]){
latter = names[i];
}
}
cout << "사전에서 가장 뒤에 나오는 문자열은 " << latter << endl;
}
*/
//예제 4-13
/*
int main() {
string s;
cout << "아래에 문자열을 입력하세요. 빈 칸이 있어도 됩니다. (한글 안됨)" << endl;
getline(cin, s, '\n');
int len = s.length();
for(int i=0; i<len; i++){
string first = s.substr(0, 1);
string sub = s.substr(1, len-1);
s = sub + first;
cout << s << endl;
}
}
*/
//예제 4-14
int main() {
string s;
cout << "7+23+5+100+25와 같이 덧셈 문자열을 입력하세요." << endl;
getline(cin, s, '\n');
int sum =0;
int startIndex = 0;
while(true){
int fIndex = s.find('+', startIndex);
if(fIndex == -1){
string part = s.substr(startIndex);
if(part == "") break;
cout << part << endl;
sum += stoi(part);
break;
}
int count = fIndex - startIndex;
string part = s.substr(startIndex, count);
cout << part << endl;
sum += stoi(part);
startIndex = fIndex+1;
}
cout << "숫자들의 합은 " << sum;
}