Today we learn how to count how many even and odd numbers there are in a sequence of integers. Like any problem, many solutions exist and here we analyse just one among many possible ones.

This is the complete code:

/* Write a function to count how many even and odd numbers there are in a sequence of integers.
Examples:
Input Returns
[1, 6, 3, 2, 5, 12, 7] 3 even, 4
[-2, -12, 5, 8, 9, 10] 4 even, 2 odd
*/
#include <iostream>
#include <tuple>
using namespace std;
// Foward declarations
int countEven(int *seq);
tuple<int , int> countEvenOdd(int *seq);
main() {
// Initialise sequences
int seq1[] = {1, 6, 3, 2, 5, 12, 7} ;
int seq2[] = {-2, -12, 5, 8, 9, 10};
// Run the function
int nEven1 = countEven(seq1);
int nEven2 = countEven(seq2);
// Print outputs
cout << "Number of even number" << endl;
cout << " in seq1: " << nEven1 << endl;
cout << " in seq2: " << nEven2 << endl;
// Print both even and odd numbers with a different function
int nEven, nOdd;
tie(nEven , nOdd) = countEvenOdd(seq1);
printf("seq1 has %d even numbers and %d odd numbers. \n", nEven, nOdd);
tie(nEven , nOdd) = countEvenOdd(seq2);
printf("seq2 has %d even numbers and %d odd numbers. \n", nEven, nOdd);
return 0;
}
int countEven(int *seq){
int counter = 0; // Set up a counter
for (int i=0; i < sizeof(seq)-1; i++) { // loop
if (seq[i]%2 == 0) // divide by two: the number is even if remainder is zero
counter += 1; //
}
return counter;
}
tuple<int , int> countEvenOdd(int *seq)
{
int even = 0;
int odd =0;
for (int i=0; i < sizeof(seq)-1; i++) // loop
(seq[i]%2 == 0) ? even += 1 : odd += 1 ;
return make_tuple(even, odd);
}

*Related*