static void my_add(t_btree *root, t_btree *add, int (*cmp)(const t_btree *, const t_btree *)) { if ((*cmp)(root, add) > 0) { if (root->left) return (my_add(root->left, add, cmp)); else { root->left = add; return ((void)(add->parent = root)); } } else { if (root->right) return (my_add(root->right, add, cmp)); else { root->right = add; return ((void)(add->parent = root)); } } }
int main(int ac, char **av) { t_nb *nb; if (ac != 5) { my_putstr("error Usage\n"); return (1); } else { if (av[2][0] == '+') { nb = my_add(make_nb(av[1]), make_nb(av[2]), av[3]); print_nb(nb); } } }
void readArguments(char* argv[]) { //printf("Your arguments: operator = %s number1 = %s number2 = %s\n",argv[1],argv[2],argv[3]); char operator[4]; char* number_1 = malloc(sizeof(char) * strlen(argv[2])); char* number_2 = malloc(sizeof(char) * strlen(argv[2])); strcpy(operator,argv[1]); strcpy(number_1,argv[2]); strcpy(number_2,argv[3]); if (strcmp(operator, "add") == 0) { my_add(number_1,number_2); } else if (strcmp(operator, "sub") == 0) { my_sub(number_1,number_2); } else if (strcmp(operator, "mul") == 0) { my_mul(number_1,number_2); } else if (strcmp(operator, "div") == 0) { my_div(number_1,number_2); } else { //A case which is not possible - except of an invalid argv[1] argument ;) exit(EXIT_FAILURE); } }