Download: Reese.zip
numeric_function.cpp// numeric_function.cpp
#include <algorithm>
#include <numeric>
#include <vector>
#include "tips.hpp"
int factorial( int n );
int teams( int candidate_size, int team_size );
using namespace std;
int main( )
{
// make a vector with 0, 1, 2, 3, 4, 5
vector<int> numbers( 6, 1 );
numbers[0] = 0;
partial_sum( numbers.begin(), numbers.end(), numbers.begin() );
// compute the factorial of each number
vector<int> result( 6 );
transform( numbers.begin(), numbers.end(), result.begin(),
factorial );
tips::print( result, "Factorials of 0-5" );
// candidates available and team sizes for baseball, basketball,
// football and soccer
const int candidate_array[] = { 14, 11, 30, 17 };
const int team_array[] = { 9, 5, 22, 11 };
const int array_length = sizeof( candidate_array )
/ sizeof( candidate_array[0] );
vector<int> candidate( candidate_array,
candidate_array + array_length );
vector<int> team( team_array, team_array + array_length );
result.resize( array_length );
// compute the number of possible teams
transform( candidate.begin(), candidate.end(), team.begin(),
result.begin(), teams );
cout << endl
<< "There are " << result[0] << " possible baseball teams\n"
<< "There are " << result[1] << " possible basketball teams\n"
<< "There are " << result[2] << " possible football teams\n"
<< "There are " << result[3] << " possible soccer teams";
}
// n >= 0
int factorial( int n )
{
int n_factorial = 1;
for( int i = n; i > 1; --i )
n_factorial *= i;
return n_factorial;
}
// num_candidates >= 1, 1 <= team_size <= num_candidates
int teams( int num_candidates, int team_size )
{
// use double to avoid integer overflow
double permutations = 1;
for( int i = num_candidates; i > num_candidates - team_size; --i )
permutations *= i;
for( int i = team_size; i > 1; --i )
permutations /= i;
return static_cast<int>( permutations );
}
Factorials of 0-5: 1 1 2 6 24 120 There are 2002 possible baseball teams There are 462 possible basketball teams There are 5852925 possible football teams There are 12376 possible soccer teams
Maintained by John Loomis, updated Wed Feb 14 23:53:52 2007