#include <iostream>

using std::cout;
using std::endl;

void swap( int&, int& );
int array_sum( int , int[] );
void array_print( int , int[] );
void array_sort( int , int[] );
bool array_find( int , int[] , int );

int main()
{
	int a[6] = { 0, -1 , 3 , -2 , -4 , 17 };

	array_print( 6 , a );
	cout << "Sum = " << array_sum( 6 , a ) << endl << endl;
	
	array_sort( 6 , a );
	
	array_print( 6 , a );

	if (array_find( 6 , a , 32 )) {
		cout << "32 is in a" << endl;
	}
	else {
		cout << "32 is not in a " << endl;
	}

	return 1;
}

int array_sum( int n, int a[] )
// int array_sum( int n , int *a )
{
	int s = 0;
	for (int i=0;i<n;i++) {
		s += a[i];
	}
	return s;
}

void array_print( int n, int a[] )
{
	for(int i=0;i<n;i++) {
		cout << a[i] << endl;
	}
	cout << endl;
}

// bubble sort
void array_sort( int n, int a[] )
{
	for (int i=0;i<n-1;i++) {
		for (int j=0;j<n-1;j++) {
			if (a[j] > a[j+1]) {
				swap( a[j] , a[j+1] );
			}
		}
	}
	
	return;
}
// 
// void array_sort( int n, int a[] , bool (*cmp)(int,int) )
// {
// 	for (int i=0;i<n-1;i++) {
// 		for (int j=0;j<n-1;j++) {
// 			if (cmp(a[j],a[j+1])) {
// 				swap( a[j] , a[j+1] );
// 			}
// 		}
// 	}
// 	
// 	return;
// }
// bool gt(int a, int b) { return (a > b); }
//
// bool lt(int a, int b) { return (a < b); }
// void sort_ascending(int n, int a[] ) {
//	array_sort( n,a,gt); return; }
//
// void sort_descending(int n, int a[] ) {
//	array_sort(n,a,lt); return; }


void swap(int &a, int &b)
{
	int tmp = a;
	a = b;
	b = tmp;
	return;
}


// returns true if item is in a
bool array_find( int n , int a[] , int item)
{
	for (int i=0;i<n;i++) {
		if (item == a[i]) {
			return true;
		}
	}
	return false;
}