#include "Functions.h" enum { Age, Wt, Ht, IQ, DrinksPerWk, ExercisePerWk, HealthIdx, HappyIdx, NetWorth }; // Local prototypes double SimilarHeight(const Arg_List &x); double Taller(const Arg_List &x); double Old(const Arg_List &x); double Drinker(const Arg_List &x); double Tall(const Arg_List &x); double Poor(const Arg_List &x); double Healthy(const Arg_List &x); double Happy(const Arg_List &x); double Athletic(const Arg_List &x); double Smart(const Arg_List &x); double Overweight(const Arg_List &x); // Implementation double SimilarHeight(const Arg_List &x) { double temp = x.arg1[Ht] - x.arg2[Ht]; if (temp < 0.0) temp = - temp; double spread = temp/18.0; if (spread > 1.0) spread = 1.0; return (spread * spread); } double Taller(const Arg_List &x) { return (x.arg1[Ht] > x.arg2[Ht] ? 1.0 : 0.0); } double Old(const Arg_List &x) { double temp = x.arg1[Age] / 100.0; if (temp > 1.0) temp = 1.0; else if (temp < 0.0) temp = 0.0; return (temp); } double Drinker(const Arg_List &x) { double temp = x.arg1[DrinksPerWk] / 28.0; if (temp > 1.0) temp = 1.0; else if (temp < 0.0) temp = 0.0; return (temp); } double Tall(const Arg_List &x) { double temp = x.arg1[Ht] / 72.0; if (temp > 1.0) temp = 1.0; else if (temp < 0.0) temp = 0.0; return (temp); } double Poor(const Arg_List &x) { double temp = x.arg1[NetWorth] / 1000000.0; if (temp > 1.0) temp = 1.0; else if (temp < 0.0) temp = 0.0; return (1 - temp); } double Overweight(const Arg_List &x) { double kg = x.arg1[Wt] / 2.2; double m = x.arg1[Ht] / 2.54; double idx = kg / (m * m); double temp = idx / 30.0; if (temp > 1.0) temp = 1.0; else if (temp < 0.0) temp = 0.0; return (temp); } double Smart(const Arg_List &x) { double temp = x.arg1[IQ] / 160.0; if (temp > 1.0) temp = 1.0; else if (temp < 0.0) temp = 0.0; return (temp); } double Athletic(const Arg_List &x) { double temp = x.arg1[ExercisePerWk] / 25.0; if (temp > 1.0) temp = 1.0; else if (temp < 0.0) temp = 0.0; return (temp); } double Happy(const Arg_List &x) { double temp = x.arg1[HappyIdx] / 10.0; if (temp > 1.0) temp = 1.0; else if (temp < 0.0) temp = 0.0; return (temp); } double Healthy(const Arg_List &x) { double temp = x.arg1[HealthIdx] / 10.0; if (temp > 1.0) temp = 1.0; else if (temp < 0.0) temp = 0.0; return (temp); } Function functions_b[] = { {"Smart", Smart}, {"SimilarHeight", SimilarHeight}, {"Old", Old}, {"Drinker", Drinker}, {"Tall", Tall}, {"Poor", Poor}, {"Taller", Taller}, {"Overweight", Overweight}, {"Healthy", Healthy}, {"Happy", Happy}, {"Athletic", Athletic} }; Function *functions = functions_b; const int num_functions = sizeof(functions_b) / sizeof(Function);