상세 컨텐츠

본문 제목

2-5 클래스 선언 후, 문자찾기

과제

by 근성 2021. 8. 4. 12:00

본문

이번문제는 Mystring이라는 class선언 후,

그 class를 통해서 자기가 원하는 문자의 index를 출력하는 문제였습니다.

 

C++라는 객체지향프로그래밍 언어를 사용하면서 처음으로 클래스란것을 다뤄보게 되는 문제였습니다.

 

저는 4가지 단계로 생각을 했습니다.

1. 먼저 main함수에서 문자열을 입력을 받은 후, 문자열의 길이를 계산.

2. 그 다음 Mystring class형 변수를 선언한 후, 그 class의 함수를 선언해서 입력받은 문자열과, 문자열의 길이를 인자로 넘겨주기.

3. 그 후 자기가 찾고싶은 문자를 입력 받은 후, 그 문자도 class의 다른 함수의 인자로 넘겨주고, index라는 변수에 그 문자가 몇번째 index인지 혹은 없는지를 return 받기.

4. index의 값이 -1(문자가 없는 경우)이면 error 출력, -1이 아닌경우는 index를 출력

#include<iostream>

using namespace std;

class Mystring//class선언
{
private: char* Mystr;

public:
    Mystring() {
        Mystr = new char[100];
    }
    ~Mystring() {
        delete[] Mystr;
    }
    char* Mystrcpy(char* src, int len)
    {
        for (int i = 0; i < len; i++)
        {
            *(Mystr + i) = *(src + i);
        }
        *(Mystr + len) = NULL;
        cout << "Copy String : " << Mystr << endl;
        return Mystr;
    }
    int Find_char(char c)
    {
        int count;
        int len;
        for (len = 0; *(Mystr + len) != 0; len++)
        {
        }
        for (count = 0; *(Mystr + count) != c; count++)
        {
        }
        if (count<=len)
            return count;
        else return -1;
        
    }
};

int main()
{
    Mystring obj;//class변수 선언
    char find_cha;
    int index = 0;
    char* main_string= new char[100];
    //메모리할당
    int count = 0;
    cin >> main_string;
    for (count; main_string[count] != 0; count++)
    {//문자열 길이
    }
    main_string = obj.Mystrcpy(main_string, count);//class함수 사용
    cin >> find_cha;
    index = obj.Find_char(find_cha);
    if (index == -1)
        cout << "ERROR";
    else
        cout << index << endl;
        
    main_string = NULL;//할당이 해제된 주소를 다시 초기화
    delete []main_string;

    return 0;
  
}

 

 

실행결과

이 문제는 이렇게 해결했지만, 저는 여기서 한가지를 깨달았습니다.

메모리해제 윗줄의 코드를 보시면

main_string = NULL;

이 있는데, 이처럼 해제를 할 배열의 주소를 다시 초기화 하지않고, 해제를 할 경우에는 해제가 완벽히 되지가 않습니다.

 

그니까 꼭꼭 주소를 다시 초기화 시켜주고, 해제하는 습관을 기릅시다 !

 

이번문제를 풀면서 느낀점은

1. class를 써보면서 점점 더 객채지향프로그래밍에 빠져드는 느낌이었습니다.

2. 메모리해제에 관해서 더 알차게 배운것 같습니다.

 

 

 

#이 문제의 출처는 kw대학교 컴퓨터정보공학부 2021년 1학기 객체지향 프로그래밍 과제 문제입니다.

관련글 더보기

댓글 영역