c++ 클래스의 내용 오름차순 정리에 관한것 (도저히 모르겠습니
글쓴이: gyxor / 작성시간: 토, 2003/05/24 - 1:13오후
#include<iostream> #include<cstring> using namespace std; class a{ public: char data[10]; void set(char *h) { strcpy(data, h); } char *ree() { return data; } void operator = (a &st) { strcpy(data , st.data); } }; class b{ public: a base; int k; char *re() { return base.ree(); } void operator = (b &st) { base = st.base; } }; int main() { b eee[3]; eee[0].base.set("c"); eee[1].base.set("b"); eee[2].base.set("a"); for(int i=0 ; i <3 ; i++) { cout << eee[i].base.data <<endl ; } for(int q=0 ; q < 3 ; q++) { for(int w = 0; w <2 ; w++) { if(strcmp( eee[w].re(), eee[w+1].re() ) ) { b temp; temp = eee[w]; eee[w] = eee[w+1]; eee[w+1] = temp; } } } cout << "오름 차순으로 정리하면 \n" ; for(i=0; i <3 ; i++) { cout << eee[i].base.data <<endl ; } return 0; }
위 내용을 출력하면 오름차순으로 정리가 되야 하는데요
클래스배열의 내용이 서로 바뀌지 않습니다.
참조에 관한 실수인것같아서 이것저것 봐꿔보고 ... 중요한 내용만
위 예제로 뽑아서 간단하게 구현해 봤는데요 마찬가지로 안되네여
무엇이 문제라서 오름차순으로 바뀌지 않는것일까요???
답변해주시면 감사드리겠습니다.
Forums:
정렬 알고리즘이 잘못된거 같습니다..^^;;
정렬 알고리즘이 잘못된거 같습니다..^^;;
===================================================
중요한건 얼마나 아느냐가 아니라 그것에 대한 열정이다.
조금만 구체적으로 알려주시면 감사드리겠습니다
^^;
STL을 쓰세요
만들어서 쓰는 것보다 훨씬 낫죠~
Life is Live
:cry: if(strcmp( eee[w].re(), eee[w+
:cry:
if(strcmp( eee[w].re(), eee[w+1].re() ) )
이부분이 잘 못되었습니다.
strcmp는 비교하는 두 문자열이 같지 않을 경우 양수나 음수가 나오는데..
if (-1) 혹은 if ( 1 ) 모두 참값이 되죠..
위의 조건 작성시에는 if( 양수일경우에만 )을 의도하였는데,
의도와는 다른 조건 처리가 됩니다.
다음과 같이 수정해 주면 될 거 같습니다.
if(strcmp( eee[w].re(), eee[w+1].re() ) > 0 )
좀 더 고심해 보시면 해결할 수 있었던 문제였던거 같은데 아쉽네요.
^^
정말 간단한 부분이었는데.. 저도 정말 아쉽네요
답변감사드려요~
헷..^^;;제가 소스를 잘못봤네요....-_-;; 알고리즘은 문제
헷..^^;;
제가 소스를 잘못봤네요....-_-;; 알고리즘은 문제 없습니다...하핫..--;;
역시 눈으로 보는 것보다 한번 돌려보는 것이 낫군요....큭;;;
===================================================
중요한건 얼마나 아느냐가 아니라 그것에 대한 열정이다.
댓글 달기