Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Sortowanie alfabetyczne elementów klasy

Ostatnio zmodyfikowano 2015-12-05 20:30
Autor Wiadomość
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:

C/C++
--------------------------------------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; //ilosc programistow w teamie
public:
    team()
        : p( NULL )
    { }
    //-----------konstruktor kopiujący--------//
    team( team & ob );
    team( size_t noitems, programmer * tab ); //tab - tablica programistow, tworzacych team
    //noitems - liczba tych programistow
    ~team();
    void disp();
    void sort(); //sortuje alfabetycznie programistow w teamie wedlug imion
};



--------------------------------------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; //niepotrzebne (chyba)
    }
}

void team::sort()
{
    int i = 0, j = 0;
    char litera;
    for( i = 0; i < nitems; i++ )
    for( j = 0; j < nitems; j++ )
    {
       
        //SORTOWANIE
       
       
    }
   
   
   
   
}

--------------------------------------PROGRAMMER.H------------------------------------------------

class programmer
{
    char * name;
public:
    programmer()
        : name( NULL )
    { }
    programmer( char * nname );
    //------------konstruktor kopiujący--------/
    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ć?
P-141433
carlosmay
» 2015-12-05 15:51:43
Mam problem ze zrzutowaniem wskaźnika typu char(skladowa klasy programmer) na string
 string = cstring;
C/C++
string str;
char cstr[] = "ajaja";
char * pcstr = cstr;
fun( pcstr, str );
cout << str << endl;
// funkcja
void fun( char * c, const string & str )
{
    str = pcstr;
}
P-141435
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.
P-141436
Davia
Temat założony przez niniejszego użytkownika
.
» 2015-12-05 20:14:59
Ok, dziękuję za odpowiedź :)
P-141441
carlosmay
» 2015-12-05 20:30:05
C/C++
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.
P-141442
« 1 »
  Strona 1 z 1