Jak zaimplementować liczenie n! w czasie kompliacji programu ?
Prosze o jakies wskazowki, wiem ze konieczne sa szablony, ale co i jak z tym zrobic ?
Jak zaimplementować liczenie n! w czasie kompliacji programu ?
Prosze o jakies wskazowki, wiem ze konieczne sa szablony, ale co i jak z tym zrobic ?
Skorzystać z Google? Na wiki masz nawet gotowy przykład z objaśnieniem. Studenci...
Intryguje mnie zwrot "w czasie kompilacji", czy to oznacza implementowanie tej funkcji do naszego programu, gdy ten się już kompiluje? ;-D
--
Opolski Portal Programistyczny
http://programowanie.opole.pl
nie spodziewalem sie ze mozna to tak latwo znalezc
jest tam sprytne wykorzystanie szablonow i rekurencji; instance szablonu sa wykonywane w trakcie kompilacji, a dzieki tym dwóm bajerom, dziala to w trakcie kompialcji :)
#include <iostream>
template <int N>
struct Silnia
{
static const int wartosc = N * Silnia<N-1>::wartosc;
};
template <> //specjalizacja kończy rekurencję
struct Silnia<0>
{
static const int wartosc = 1;
};
int main()
{
const int s = Silnia<10>::wartosc; //jest to równoważne: const int silnia4 = 24;
int k = Silnia<5>::wartosc;
std::cout << s<<" " << k;
return 0;
}
na IOCCC widziałem chyba szukanie liczb pierwszych preprocesorem
Intryguje mnie zwrot "w czasie kompilacji", czy to oznacza implementowanie tej funkcji do naszego programu, gdy ten się już kompiluje?
Nie. Wykonanie operacji przez kompilator w trakcie kompilacji. Wynikowy exek zawiera tylko gotowy wynik do wyświetlenia.
quote>na IOCCC widziałem chyba szukanie liczb pierwszych preprocesorem</quote>
Ktoś wykazał kompletność w sensie Turinga preprocesora C++, co oznacza możliwość obliczenia czegokolwiek.