W ostatniej wersji:
prog.h
#if !defined(_PROG_H_)
#define _PROG_H_
int catch22(int);
int catch22(int, int);
int catch22(int, int, int &);
void catch22(unsigned int, int &, ...);
int catch22();
int catch22(int, int*);
int catch22(int (int), int = 0, int = 100);
void catch22(int*, int);
#endif
prog.cpp
#include <cstdlib>
#include <cstdarg>
#include "prog.h"
int catch22(int n)
{
if (n < 0)
{
return 0;
}
if (n == 0)
{
return 1;
}
return catch22(n - 1) * n;
}
int catch22(int a, int b)
{
if (b > a)
{
return 0;
}
if (b == 0 || a == b)
{
return 1;
}
return catch22(a - 1, b - 1) + catch22(a - 1, b);
}
int catch22(int a, int b, int &c)
{
c = 0;
for (int i = a; i <= b; i++)
{
c += i;
}
return c;
}
void catch22(unsigned int n, int &x, ...)
{
x = 0;
va_list ap;
va_start(ap, n);
for ( ; n > 0; n--)
{
x += va_arg(ap, int);
}
va_end(ap);
}
int catch22()
{
return rand() % 2;
}
int catch22(int a, int* b)
{
int sum = 0;
for (int i = 0; i < a; i++)
{
sum += *(b + i);
}
return sum;
}
int catch22(int f(int), int a, int b)
{
int sum = 0;
for (int i = a; i < b; i++)
{
sum += f(i);
}
return sum;
}
void catch22(int* a, int b)
{
if (b >= 0)
{
a[0] = 0;
if (b > 0)
{
a[1] = 1;
for (int i = 2; i <= b; i++)
{
a[i] = a[i - 2] + a[i - 1];
}
}
}
}