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

Porównywanie łańcuchów i zwrot wskaźnika na najdłuższy.

Ostatnio zmodyfikowano 2017-09-05 14:03
Autor Wiadomość
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 ;)

C/C++
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;
}
P-164612
maly7
» 2017-09-05 13:40:43
U mnie kod poprawnie wypisuje najdłuższy element:
C/C++
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;
}
P-164613
Luq
» 2017-09-05 14:03:25
C/C++
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
P-164614
« 1 »
  Strona 1 z 1