C++

[C++] 명품 C++ 프로그래밍 실습문제 7장 12번

Hs’s Coding vlog 2023. 1. 11. 21:54

[C++]명품 C++ 프로그래밍 실습문제 7장 12번

[C++]명품 C++ programming 실습문제 7장 12번

명품 C++ 프로그래밍실습문제/연습문제 /C++

#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>

using namespace std;
class SortedArray{
    int *p;
    int size;
    void sort(){
        int tmp;
        for(int i=0 ; i<size ;i++){
            for(int j=0; j<size-i-1 ;j++){
                if(p[j] > p[j+1]){
                    tmp = p[j];
                    p[j] = p[j+1];
                    p[j+1] = tmp;
                    
                }
            }
        }
    }
public:
    SortedArray(){ this->p = NULL; this->size=0; }
    SortedArray(int p[],int size){
        this->p = new int [size];
        this->size = size;
        for(int i=0; i<size ; i++)
            this->p[i] = p[i];

    }
    SortedArray(SortedArray &copy){//복사 생성자 개념 다시공부하기
        this->size = copy.size;
        
        this->p = new int [this->size];
        for(int i=0; i<this->size; i++)
            this->p[i] = copy.p[i];
    }
    
    //~SortedArray(){ if(p) { cout << "프로그램이 종료되고 객체가 소멸함"<< endl;delete [] p;} }
    ~SortedArray(){ if(p) { delete [] p;} }
    SortedArray operator+(SortedArray& op2){
        SortedArray tmp;
        tmp.size = this->size + op2.size;
        tmp.p = new int [tmp.size];
        for(int i=0; i< this->size ;i++){
            tmp.p[i] = this->p[i];
        }
        int j=0;
        for(int i=size ; i<tmp.size;i++,j++){ //넣을때 구간을 잘확인을해라
            tmp.p[i] = op2.p[j];
        }

        return tmp;
    }
    SortedArray &operator = (const SortedArray &op2){
        delete [] p;
        this->size = op2.size;
        this->p = new int [this->size];
        
        for(int i=0;i<this->size;i++){
            this->p[i] = op2.p[i];
        }
        return *this;
    }
    
    
    void show(){
        sort();
        cout << "배열 출력 :" ;
        for(int i=0;i<this->size;i++){
            cout << this->p[i] << " " ;
            
        }
        cout << endl;
    }
    
};



int main() {
    
    int n[]={2,20,6};
    int m[]={10,7,8,30};
    
    SortedArray a(n,3) , b(m,4) ,c;
    
    c=a+b;
    a.show();
    b.show();
    c.show();
    
    cout << endl;
    return 0;
}