Porównywanie łańcuchów i zwrot wskaźnika na najdłuższy.
Ostatnio zmodyfikowano 2017-09-05 14:03
gromko12 Temat założony przez niniejszego użytkownika |
Porównywanie łańcuchów i zwrot wskaźnika na najdłuższy. » 2017-09-05 13:10:47 Witam, poniższy kod wypisuje ostatni element tablicy char* zamiast najdłuższy. Jak to zmienić? Z góry dziękuje za pomoc ;) template <> char * maxn < char *>( char * napis[], int n ); void zadanie6() { const char * tab3[ 5 ] = { "12", "123456", "1234", "123", "12345" }; const char * temp = maxn( tab3, 5 ); cout << temp << endl; delete[] temp; } template <> char * maxn < char *>( char * napis[], int n ) { char * temp = new char[ 50 ]; for( int i = 0; i < n; i++ ) { if( strlen( napis[ i ] ) > strlen( temp ) ) temp = napis[ i ]; } return temp; } |
|
maly7 |
» 2017-09-05 13:40:43 U mnie kod poprawnie wypisuje najdłuższy element: char * maxn( char * napis[], int n ) { char * temp = new char[ 50 ]; for( int i = 0; i < n; i++ ) { if( strlen( napis[ i ] ) > strlen( temp ) ) temp = napis[ i ]; } return temp; } void zadanie6() { const char * tab3[ 5 ] = { "12", "123456", "1234", "123", "12345" }; const char * temp = maxn( const_cast < char **>( tab3 ), 5 ); cout << temp << endl; delete[] temp; } |
|
Luq |
» 2017-09-05 14:03:25 template <> char * maxn < char *>( char * napis[], int n );
const char * temp = maxn( tab3, 5 );
const char* i char* to nie to samo. Pewnie nawet nie wywołujesz tej specjalizacji szablonu. Poza tym alokacja pamięci nie ma w tym kodzie żadnego sensu |
|
« 1 » |