Friday, January 9, 2009

Find sum of two even numbers in a array

// findsumof2evens.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
/* int Find2Evens(int iLen, int* arr)
* IN: iLen - length of array
* arr - array of list
* OUT: -1 if list is empty the sum otherwise
*/
int Find2Evens(int iLen, int* arr)
{
int sum = 0;

//if there are no element in array
if((iLen == 0)|| (arr == NULL))
return -1;//no case we get the sum of 2 even nos to be -1 except in error case

//if there is only one element
if(iLen == 1)
if(arr[0]%2 == 0)
return arr[0];

int* iEven1 = NULL;
int* iEven2 = NULL;
for(int i = 0; i < iLen; i++)
{
if(arr[i]%2 == 0)
{
if((iEven1 == NULL)||(arr[i] > *iEven1))
{
iEven2 = iEven1;
iEven1 = &arr[i];
continue;
}
if(arr[i] != *iEven1)//if it a array like {1,4,4,5}
{
if((iEven2 == NULL)||(arr[i] > *iEven2))
{
iEven2 = &arr[i];
}
}
}
}
if((iEven1 == NULL)&&(iEven2 == NULL))
return -1;
if(iEven2 == NULL)
return *iEven1;
return *iEven1 + *iEven2;
}

int _tmain(int argc, _TCHAR* argv[])
{
int len = 4;
int arr[] = {1,-4,-2,7};
Find2Evens(len,arr);
return 0;
}

No comments: