Fixed another error with mult

Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
This commit is contained in:
sigonasr2 2022-07-18 21:43:57 -05:00
parent fb6111b33d
commit e580693d7a
3 changed files with 9 additions and 8 deletions

BIN
current

Binary file not shown.

View File

@ -15,7 +15,7 @@
int main(int argc,char**argv) { int main(int argc,char**argv) {
struct String factorialSum = {1,"0"}; struct String factorialSum = {1,"0"};
int counter=1; int counter=1;
mult((struct String){3,"575"},(struct String){4,"4200"}); printf("%s",mult((struct String){14,"85018361849301"},(struct String){7,"1849204"}).str);
while (counter<=100) { while (counter<=100) {
counter++; counter++;
} }

View File

@ -20,18 +20,19 @@ struct String mult(struct String numb1, struct String numb2) {
carryover=0; carryover=0;
for (int j=n1.length-1;j>=0;j--) { for (int j=n1.length-1;j>=0;j--) {
int mult = (n1.str[j]-'0')*(n2.str[i]-'0')+((carryover!=0)?carryover:0); int mult = (n1.str[j]-'0')*(n2.str[i]-'0')+((carryover!=0)?carryover:0);
//printf(" %d/%d\n",mult,carryover); printf(" %d/%d\n",mult,carryover);
carryover=0; carryover=0;
if (mult>=10) { if (mult>=10) {
carryover=mult/10; carryover=mult/10;
mult=mult%10; mult=mult%10;
} }
addends[i][j+1]=mult; addends[(n2.length-1)-i][j+1]=mult;
} }
if (carryover>0) { if (carryover>0) {
addends[i][0]=carryover; addends[(n2.length-1)-i][0]=carryover;
} }
} }
printIntDoubleArr(n2.length,n1.length+1,addends);
struct String sum = {1,"0"}; struct String sum = {1,"0"};
for (int i=0;i<n2.length;i++) { for (int i=0;i<n2.length;i++) {
char val[n1.length+1+i]; char val[n1.length+1+i];
@ -42,14 +43,14 @@ struct String mult(struct String numb1, struct String numb2) {
val[j]=addends[i][j]+'0'; val[j]=addends[i][j]+'0';
} }
sum=add((struct String){n1.length+1+i,val},sum); sum=add((struct String){n1.length+1+i,val},sum);
printf("%s\n",sum.str); //printf("%s\n",sum.str);
} }
printf("%s",sum.str); //printf("%s",sum.str);
//printIntDoubleArr(n2.length,n1.length+1,addends); return sum;
} }
struct String add(struct String numb1, struct String numb2){ struct String add(struct String numb1, struct String numb2){
printf("%s %s\n",numb1.str,numb2.str); //printf("%s %s\n",numb1.str,numb2.str);
byte carryover=0; byte carryover=0;
int digitCount=0; int digitCount=0;
char*str = malloc(0); char*str = malloc(0);