[C++] Sortowanie alfabetyczne elementów klasy
Ostatnio zmodyfikowano 2015-12-05 20:30
Davia Temat założony przez niniejszego użytkownika |
[C++] Sortowanie alfabetyczne elementów klasy » 2015-12-05 15:23:57 Hej, tak jak z temacie nie wiem jak poradzić sobie z takim problemem jak sortowanie elementów tablicy klasy. Oto moj programu: --------------------------------------MAIN----------------------------------------------------
int _tmain( int argc, _TCHAR * argv[] ) { programmer ttab1[] = { programmer( "Jan" ), programmer( "Piotr" ), programmer( "Anna" ), programmer( "Beata" ), programmer( "Barbara" ), }; team tm( sizeof( ttab1 ) / sizeof( programmer ), ttab1 ); tm.disp(); tm.sort(); tm.disp(); system( "pause" ); return 0; }
--------------------------------------TEAM.H----------------------------------------------------
class team { programmer * p; size_t nitems; public: team() : p( NULL ) { } team( team & ob ); team( size_t noitems, programmer * tab ); ~team(); void disp(); void sort(); };
--------------------------------------TEAM.CPP----------------------------------------------------
team::team( size_t noitems, programmer * tab ) { nitems = noitems; try { p = new programmer[ noitems ]; for( size_t it = 0; it < noitems; ++it ) p[ it ] = tab[ it ]; } catch( bad_alloc ) { } }
team::~team() { if( p ) delete[] p; p = NULL; }
void team::disp() { if( p ) { for( size_t it = 0; it < nitems; ++it ) p[ it ].disp(); } cout << "=========================\n"; }
team::team( team & ob ) { if( !p ) p = NULL; else { p = new programmer[ sizeof( ob.p ) ]; p = ob.p; nitems = ob.nitems; } }
void team::sort() { int i = 0, j = 0; char litera; for( i = 0; i < nitems; i++ ) for( j = 0; j < nitems; j++ ) { } }
--------------------------------------PROGRAMMER.H------------------------------------------------
class programmer { char * name; public: programmer() : name( NULL ) { } programmer( char * nname ); programmer( programmer & ob ); ~programmer(); void disp(); private: void alloc( size_t len ); };
--------------------------------------PROGRAMMER.CPP----------------------------------------------
programmer::programmer( char * nname ) { size_t len = strlen( nname ) + 1; alloc( len ); strcpy_s( name, len * sizeof( char ), nname ); }
programmer::~programmer() { if( name ) delete[] name; name = NULL; }
void programmer::disp() { if( name ) cout << name << endl; }
void programmer::alloc( size_t len ) { try { name = new char[ len ]; name[ 0 ] = '\0'; } catch( bad_alloc ) { } }
programmer::programmer( programmer & ob ) { if( !name ) name = NULL; else { name = new char[ sizeof( ob.name ) ]; name = ob.name; } }
W pliku team.cpp znajduje się funkcja void team::sort(). Mam problem ze zrzutowaniem wskaźnika typu char(skladowa klasy programmer) na string, ktoś ma jakiś pomysł jak to zrobić? |
|
carlosmay |
» 2015-12-05 15:51:43 Mam problem ze zrzutowaniem wskaźnika typu char(skladowa klasy programmer) na string |
string = cstring; string str; char cstr[] = "ajaja"; char * pcstr = cstr; fun( pcstr, str ); cout << str << endl;
void fun( char * c, const string & str ) { str = pcstr; }
|
|
carlosmay |
» 2015-12-05 16:52:27 Możesz też skorzystać z funkcji porównującej cstringi. strcmp(). Wydaje się być lepszym rozwiązaniem do sortowania. |
|
Davia Temat założony przez niniejszego użytkownika |
. » 2015-12-05 20:14:59 Ok, dziękuję za odpowiedź :) |
|
carlosmay |
» 2015-12-05 20:30:05 char sch[] = "ajajajja"; char sc[] = "nana"; char ch[] = "ajajajja";
cout <<( strcmp( sch, sc ) ) << endl; cout <<( strcmp( sc, sch ) ) << endl; cout <<( strcmp( sch, ch ) ) << endl;
Gdyby były wątpliwości co do zwracanych wartości. Edit: Widzę, że w międzyczasie poszło. Powodzenia. |
|
« 1 » |