Citat:
Ursprungligen postat av sick-people
Hej alla glada! Har lite problem med en C++ uppgift, ingen skoluppgift utan helt egen vilja...
Uppgifts formulering: "Gör ett program som beräknar summan av alla udda tal mellan 1000 och 2000. Programmet ska bara skriva ut svaret."
Det jag inte kan komma på är hur jag får ut varje udda värde för att sedan addera dem... (jag använder ett while uttryck).
Kod:
#include <iostream>
template<bool Done, int First, int Last, int Step>
struct SumImpl {
static const int Value = First + SumImpl< (First+Step >= Last), First+Step, Last, Step>::Value;
};
template<int First, int Last, int Step>
struct SumImpl<true, First, Last, Step> {
static const int Value = 0;
};
template<int First, int Last, int Step>
struct Sum {
static const int Value = SumImpl<(First>=Last), First, Last, Step>::Value;
};
int main() {
std::cout << Sum<1001, 2000, 2>::Value;
};
Garanterat snabbare än andra program. Fast kompileringen ställer en hel del krav på kompilatorn.