int main(int argc, char* argv[]) { if(argc!=4) { printf( "Usage: %s <v> <a> <t>", argv[0] ); exit( EXIT_FAILURE ); } double b = atof(argv[1]); double T = atof(argv[2]); double f = atof(argv[3]); double acctng[3] = {0, b*T, -b}; double dectng[1] = {-f}; /* Defining the Acceleration polynomials for the car */ polynomial acc_car = polynomial_construct(2, acctng); polynomial dec_car = polynomial_construct(0, dectng); /* Velocity and distance polynomials for the accelerating car */ polynomial velocity_of_acc_car = polynomial_integrate(acc_car); polynomial distance_trvd_acc_car = polynomial_integrate(velocity_of_acc_car); /* Evaluating the distance travelled by the accelerating car in time T */ double distance_1 = polynomial_evaluate(distance_trvd_acc_car, T); polynomial velocity_of_dec_car = polynomial_integrate(dec_car); velocity_of_dec_car.coeff[0] = polynomial_evaluate(velocity_of_acc_car, T); double time_of_stop = -velocity_of_dec_car.coeff[0]/velocity_of_dec_car.coeff[1]; polynomial distance_trvd_dec_car = polynomial_integrate(velocity_of_dec_car); double distance_2 = polynomial_evaluate(distance_trvd_dec_car, time_of_stop); /* polynomial_print(acc_car); polynomial_print(velocity_of_acc_car); polynomial_print(distance_trvd_acc_car); polynomial_print(dec_car); polynomial_print(velocity_of_dec_car); polynomial_print(distance_trvd_dec_car); printf("The distance_1 travelled by the car is %.4f\n", distance_1 ); printf("The distance_2 distance travelled by the car is %.4f\n"); */ printf("%.4f\n", time_of_stop ); printf("%f\n", distance_1 + distance_2); }
int integrate(entry_t **list, char *args) { complex_t *z = NULL; entry_t *e = NULL; polynomial_t *q = NULL; size_t size = 0, i = 0; char **table = NULL, *c = NULL, count = 0; if (list == NULL || args == NULL) return EXIT_FAILURE; table = split(args, ' ', &size); if (table == NULL || size == 1) { if (table != NULL) { free(*table); free(table); } return EXIT_FAILURE; } e = entry_get(*list, table[1]); if (e == NULL || e->type != POLYNOMIAL) { for (i = 0; i < size; i++) free(table[i]); free(table); return EXIT_FAILURE; } if (size > 2) { c = args; while (count < 2) { if (*c == ' ') count++; c++; } z = complex_fromString(c); if (z == NULL) { for (i = 0; i < size; i++) free(table[i]); free(table); return EXIT_FAILURE; } q = polynomial_integrate((polynomial_t*) e->polynomial, z); } else q = polynomial_integrate((polynomial_t*) e->polynomial, NULL); if (q == NULL) { if (z != NULL) complex_free(z); for (i = 0; i < size; i++) free(table[i]); free(table); return EXIT_FAILURE; } polynomial_display(q); fprintf(stdout, "\n"); entry_add(list, (void*) q, POLYNOMIAL); for (i = 0; i < size; i++) free(table[i]); free(table); return EXIT_SUCCESS; }