/***************************************************************************** File: HiLoCode.cpp Author: Keith Alcock Comment: Four versions of the same function ****************************************************************************** Includes *****************************************************************************/ #include // cout #include "apvector.h" // apvector #include "Range.h" // Range /***************************************************************************** Version 1 *****************************************************************************/ #include // INT_MAX, INT_MIN Range hilo1(apvector &vector) { int lowest=INT_MAX; int highest=INT_MIN; for (int index=0;indexr?l:r; // What does this mean? } /***************************************************************************** Version 2 *****************************************************************************/ Range hilo2(apvector &vec) { int l,h,n,l2=vec.length(); int i=1; while (ih) h=n; i++; } return Range(l,h); } /***************************************************************************** Version 3 *****************************************************************************/ Range hilo3(apvector &vector) { int i = 0; int min = vector[i]; // default min is 0th element in vector int max = vector[i]; // default max is 1st element in vector i = vector.length()-1; // start at the back while (i >= 1) { // while we haven't made it to the front int num = vector[i]; // check this number out if (min > num) { // do we have a new minimum value? min = num; // store it --i; // move on } else { // if it isn't a new minimum, then if (num > max) { // is is a new maximum? max = num; // store it } } --i; // next one } return Range(min,max); // return range from min to max } /***************************************************************************** Version 4 *****************************************************************************/ int higher(int left,int right) { // todo: Figure out what this means return left>right ? left : right; } int highest(apvector& vector,int n) { if (n==0) return vector[0]; return higher(vector[n],highest(vector,n-1)); } int lower(int right,int left) { return left &a,int aa) { if (aa<=0) return a[0]; return lower(a[aa],lowest(a,aa-2)); } Range hilo4(apvector &vector) { int min=lowest(vector,vector.length()-1); return Range(min,highest(vector,vector.length()-1)); } /****************************************************************************/