![]()  |  
  ![]()  |  
  ![]()  |  
  ![]()  |  
  ![]()  |  
   
 | 
Suppose, for example, that you want your analyze_trades program to 
have two ways of operating, one fast and approximate and another slower, 
but more accurate.  The mean_price function, as defined, is 
completely accurate: 
double mean_price (struct trade **array, int length) { 
  int counter; double sum = 0.0;  
  for (counter = 0; counter < length; ++counter) 
    sum = sum + array[counter] -> price; 
  return sum / counter; 
} 
 
Here is another, faster version of mean_price that bases its result 
on only every second element in the array: 
double mean_price (struct trade **array, int length) { 
  int counter, selector; double sum = 0.0;  
  for (counter = 0, selector = 0; 
       selector < length; 
       ++counter, selector = selector + 2) 
    sum = sum + array[selector] -> price; 
  return sum / counter; 
} 
You can combine the two versions of mean_price, controlling speed 
versus accuracy via a global variable named mode.  If the value of 
mode is 0, you have high speed; if the value of mode is 
1, you have high accuracy: 
int mode = default value, 0 or 1 
... 
double mean_price (struct trade **array, int length) { 
  int counter, selector, increment; double sum = 0.0;  
  if (mode) 
    increment = 2; 
  else 
    increment = 1; 
  for (counter = 0, selector = 0; 
       selector < length; 
       ++counter, selector = selector + increment) 
    sum = sum + array[selector] -> price; 
  return sum / counter; 
}