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 )
좀 더 고심해 보시면 해결할 수 있었던 문제였던거 같은데 아쉽네요.
^^
정말 간단한 부분이었는데.. 저도 정말 아쉽네요
답변감사드려요~
헷..^^;;제가 소스를 잘못봤네요....-_-;; 알고리즘은 문제
헷..^^;;
제가 소스를 잘못봤네요....-_-;; 알고리즘은 문제 없습니다...하핫..--;;
역시 눈으로 보는 것보다 한번 돌려보는 것이 낫군요....큭;;;
===================================================
중요한건 얼마나 아느냐가 아니라 그것에 대한 열정이다.
댓글 달기