Calculates the sum of elements in an array that satisfy a certain condition.

View versions (3)

Interface

Overview

The components available with this module calculate the sum of elements in an array that satisfy a certain condition. The difference between the two functions consists in the way the condition is given.

GPL Licence — free for non commercial use. See Licence details.

FUNCTION

sumif

This function calculates the sum of elements in an array that satisfy a certain predicate given as argument. The predicate is a user-defined function that takes as first argument each element of the array and as second argument the value of <em> cmp </em>. Three predicate functions are available with this module to provide basic relational operators, tests to see if two values are equal, or whether one is greater/lesser than the other.

Example 1

#include <iostream>
#include <codecogs/statistics/sumif.h>
int main()
{
  int x[12] = {3, 5, 1, 2, 6, 8, 10, 2, 2};
  std::cout << "The sum of elements equal to 2 is: ";
  std::cout << Statistics::sumif<int>(12, x, 2, Statistics::isEqual);
  std::cout << std::endl;
  std::cout << "The sum of elements greater than 3 is: ";
  std::cout << Statistics::sumif<int>(12, x, 3, Statistics::isGreater);
  std::cout << std::endl;
  std::cout << "The sum of elements less than 7 is: ";
  std::cout << Statistics::sumif<int>(12, x, 7, Statistics::isLess);
  std::cout << std::endl;
  return 0;
}

Output

The sum of elements equal to 2 is: 6
The sum of elements greater than 3 is: 29
The sum of elements less than 7 is: 21

Parameters

n
the number of elements in the data array
data
the input array
cmp
the value which is compared to all values in the input array through the predicate function
fctpnt
the predicate function

Returns

the number of elements in the data array that satisfy the given predicate

FUNCTION

sumif

This function calculates the sum of <em> integers </em> in an array that satisfy a certain predicate given as argument. The predicate is given as a character string, with the following syntax: the first character is one of "=", "!", ">" or "<" to provide the relation that needs to be satisfied, where "!" means inequality. The next characters are used to specify the integer (signed or unsigned) to which the value of each element of the array is to be compared.

Example 1

#include <iostream>
#include <codecogs/statistics/sumif.h>
int main()
{
  int x[12] = {3, 5, 1, 2, 6, 8, 10, 2, 2};
  std::cout << "The sum of elements equal to 2 is: ";
  std::cout << Statistics::sumif<int>(12, x, "=2");
  std::cout << std::endl;
  std::cout << "The sum of elements greater than 3 is: ";
  std::cout << Statistics::sumif<int>(12, x, ">3");
  std::cout << std::endl;
  std::cout << "The sum of elements less than 7 is: ";
  std::cout << Statistics::sumif<int>(12, x, "<7");
  std::cout << std::endl;
  return 0;
}

Output

The sum of elements equal to 2 is: 6
The sum of elements greater than 3 is: 29
The sum of elements less than 7 is: 21

Parameters

n
the number of elements in the data array
data
the input array of integers
cmp
a string expression giving the condition that an element of the data array should satisfy

Returns

the number of elements in the data array that satisfy the given condition