Ahoj lidi, jdu vás opět požádat o pomoc. Zadání je následující:
Napište šablonu funkce maxn() která přijímá jako paramtery pole položek typu T a celé číslo, jako jeho velikost. Funkce navrací jeho největší prvek. Program by měl také zahrnovat specializaci, která přijímá pole ukazatelů na char jako paramter a počet ukazatelů jako druhý parametr a navrací adresu největšího řetězce. Jestliže existuje více řetězců, kteří mají stejnou nejdelší délku, funkce navrací adresu prvního takového řetězce v pořadí. Otestujte specializaci pomocí pole o 5ti takových řetězcích.
Tu první část sem zvládnul, a ted mi jde o tu specializaci na řetězce. Udělal jsem to nějak takhle:
/* Kapitola 8 - Příběhy ve funkcích - příklad 6. */
#include <iostream>
using namespace std;
template<typename typ>
typ maxn(typ a[], int b);
int main()
{
int y[6]={ 2, 5, 8, 10, 99, 15 };
double z[4]={22.5, 12.2, 26.7, 29.8};
char ch1[]="To je ale";
char ch2[]="Podelanej";
char ch3[]="Program s tema sablonama";
char ch4[]="Ale zatim";
char ch5[]="To jde";
char * ch[5]={ ch1, ch2, ch3, ch4, ch5 };
cout<<maxn(y,6);
cout<<endl<<maxn(z,4);
cout<<endl<<maxn(ch, 5);
cout <<"\n\nAhoj!\n";
cout<<endl;
system("PAUSE");
return 0;
}
template<typename typ>
typ maxn(typ a[], int b)
{
typ temp=0;
for(int x=0; x<b; x++)
{
if(a[x]>temp)
{ temp=a[x]; }
}
return temp;
}
Ale to mi vrátí jen ten první řetězec. A ten nejdelší není. Prosím kdybyste mi někdo poupravil ten kód, nebo napsal rovnou novej a trochu to vysvětlil. Díky.