Fixed another error with mult
Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
This commit is contained in:
parent
fb6111b33d
commit
e580693d7a
@ -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++;
|
||||||
}
|
}
|
||||||
|
15
src/utils.c
15
src/utils.c
@ -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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user