#include "utils.h" #include #include struct String add(struct String numb1, struct String numb2){ byte carryover=0; int digitCount=0; char*str = malloc(0); if (numb1.length>=numb2.length) { for (int offset=0;offsetoffset) { //printf("%c %c\n",numb1.str[numb1.length-offset-1],numb2.str[numb2.length-offset-1]); int sum=((numb1.str[numb1.length-offset-1]-'0')+(numb2.str[numb2.length-offset-1]-'0'))+((carryover>0)?carryover--:0); if (sum>=10) { carryover=1; sum-=10; } str[offset]=sum+'0'; } else { str[offset]=numb1.str[numb1.length-offset-1]; } } } else { for (int offset=0;offsetoffset) { //printf("%c %c\n",numb1.str[numb1.length-offset-1],numb2.str[numb2.length-offset-1]); int sum=((numb1.str[numb1.length-offset-1]-'0')+(numb2.str[numb2.length-offset-1]-'0'))+((carryover>0)?carryover--:0); if (sum>=10) { carryover=1; sum-=10; } str[offset]=sum+'0'; } else { str[offset]=numb2.str[numb2.length-offset-1]; } } } if (carryover>0) { str = realloc(str,++digitCount); str[digitCount-1]='1'; } for (int i=0;i