//created Evan Andersen //2012 //Free for all to use #include #include #include #include int compare(void* correct, void* approx, int numElements,char** names, double* values, double error) { double result = evaluator_evaluate(correct, numElements, names, values); double guess = evaluator_evaluate(approx, numElements, names, values); if((fabs(result - guess)/fabs(result)) > error) { return 0; } return 1; } int main() { char buffer[1024]; fgets(buffer, sizeof(buffer), stdin); buffer[strlen(buffer) - 1] = '\0'; char* solution = "-60/11*e^(-t/0.22)"; void* correct = evaluator_create(solution); void* student = evaluator_create(buffer); if(!correct) { fprintf(stderr, "Failed to initialize math evaluator\n", stderr); return -1; } char *names[] = { "t" }; double values[] = {0.0}; int i; while(1) { values[0] = i*0.01; if(!compare(correct, student, 1, names, values, 0.01)) { printf("Solution incorrect\n"); break; } if(i > 10000) { printf("Solution Correct\n"); break; } i++; } evaluator_destroy(correct); evaluator_destroy(student); return 0; }