Dwuargumentowa rodzina funkcji

0

Witam.
Mam takie zadanko.
Napisz rodzinę dwuargumentowych funkcji pot, z których każda jako argumenty otrzymuje liczbę n i nieujemną liczbę całkowitą m typu unsigned int (zakładamy, że co najmniej jeden z argumentów jest różny od zera) i zwraca jako wartość nm. Przeciąż funkcję pot dla n o typach: double, int, unsigned int. Wynik zwrócony przez każdą z funkcji pot powinien być tego samego typu co n.

Napisałem to:

double pot(unsigned int m, double n)
{
    int i;
    double suma =1;
    for(i=0;i<m;i++)
        suma *= n;
    return suma;
}
int pot(unsigned int m, int n)
{
    int i,suma =1;
    for(i=0;i<m;i++)
        suma *= n;
    return suma;
}
unsigned int pot(unsigned int m, unsigned int n)
{
    int i;
    unsigned int suma =1;
    for(i=0;i<m;i++)
        suma *= n;
    return suma;
}

lecz pojawia się w mojej głowie dosyć dziwne pytanie. Jak ma wyglądać funkcja main ?

3

main() jak to main() - ma wyglądać tak jak zawsze.

Ciekawie odwróciłeś kolejność argumentów funkcji - zarówno względem konwencji jak i warunków zadania.

    int i;
    double suma =1;
    for(i=0;i<m;i++)

W C++ nie musisz (a nawet nie powinieneś) definiować indeksu pętli poza pętlą.

BTW: czy to ma być wstęp do szablonów w kursie? Pokazać że nie trzeba pisać tego samego n razy?

0

Nie do końca chodziło mi o to. Wywołanie odpowiedniej funkcji w tym przypadku rozumiem jest zależne od typu zmiennej wprowadzanej ? Pojawiła mi się też myśl w głowię czy jest możliwość nie określania typu zmiennej. Tylko kompilator w czasie "wpisywania" przez nas wartości określi sam jej typ ?

Z tego co widzę szablony są troszkę później, ale z czystej ciekawości jak wyglądałoby rozwiązanie tego zadania z szablonami ?

3

Typ zmiennej określasz podczas jej definicji.

int to_jest_int;
unsigned a_to_unsigned;
double a_to_double;

Z szablonami:

template<typename T>
T pot(unsigned int m, T n)
{
    T suma =1;
    for(i=0;i<m;i++)
        suma *= n;
    return suma;
}

tak BTW#2 - nazwa zmiennej suma przy liczeniu iloczynu/potęgi jest dziwna.

1 użytkowników online, w tym zalogowanych: 0, gości: 1