#include #include #include "auxiliar.h" int check_length(char **inputs, uint8_t num_inputs) { int input_length = strlen(inputs[0]); if((input_length != strlen(inputs[1])) || (strlen(inputs[2]) != 1)) { return -1; } return input_length; } int main(int argc, char **argv) { int i; int pos; if(argc != 2) { error(); } char *input = argv[1]; if(!strcmp(input,"error")) { error(); } char **inputs = comma_separate(input); if(inputs == NULL) { error(); } int num_inputs = num_occurrences(input,','); if(num_inputs != 3) { error(); } int input_length = check_length(inputs,num_inputs); if(input_length == -1) { error(); } int a,b,borrow_in,c; char borrow_out = '0'; a = bin2dec(inputs[0]); b = bin2dec(inputs[1]); borrow_in = bin2dec(inputs[2]); c = a-(b+borrow_in); if(c < 0) { borrow_out = '1'; } char *result = dec2bin(c,input_length); printf("%s,%c",result,borrow_out); free(result); free_mem(inputs,num_inputs); return 0; }