I am getting this error in lines that involve "ch[_]" in lines 27, 28, 29, 33, 42, 43, 44, and 48, heres the code:
Code:#include <stdio.h> #include <stdlib.h> #include <math.h> #include <string.h> struct integer{ int* digits; int size; }; FILE *IFP; //convert string to int array struct integer* multiply(struct integer *p, struct integer *q){ struct integer *done = malloc(sizeof(struct integer)); struct integer *temp = malloc(sizeof(int) * 1000000000); struct integer *ch = malloc(sizeof(char) * 1000000000); done->digits = malloc(sizeof(int) * (done->size + 1)); int i = 0, j = 0, k = 0, d = 0, l1, l2; long int carry = 0; l1 = p->size - 1; l2 = q->size - 1; if (l1 >= l2){ for (i = l2; i >= 0; i--){ for (j = l1; j >= 0; j--){ ch[k] += (q->digits[i] * p->digits[j] + carry) % 10; temp[k] = ch[k] % 10; temp[k+1] = ch[k] / 10; k++; carry = (q->digits[i] * p->digits[j] + carry) / 10; } temp[k++] += carry; carry = 0; ch = temp; d++; k = d; } }else{ for (i = l1; i >= 0; i--){ for (j = l2; j >= 0; j--){ ch[k] += (q->digits[j] * p->digits[i] + carry) % 10; temp[k] = ch[k] % 10; temp[k+1] = ch[k] / 10; k++; carry = (q->digits[j] * p->digits[i] + carry) / 10; } temp[k++] += carry; carry = 0; ch = temp; d++; k = d; } } done->digits = temp; return done; } struct integer* convert_integer(char* stringInt){ struct integer *converted = malloc(sizeof(struct integer)); int length, i, *ints; ints = (int *)malloc(10001 * sizeof(int)); length = strlen(stringInt); converted->size = length; for(i = length; i > 0; i--) ints[i - 1] = (stringInt[length - i]-48); converted->digits = ints; return converted; } void print(struct integer *a){ int len = a->size; int i, j; for(i = 1000000000; i >= 0; i--){ if (a->digits[i] != 0){ for (j = i; j >= 0; j--){ printf("%d", a[j]); } break; } printf("\n"); } } int main(){ IFP = fopen("bigint.txt", "r"); char *num1, *num2; num1 = (char *)malloc(10001 * sizeof(char)); num2 = (char *)malloc(10001 * sizeof(char)); struct integer *snum1 = malloc(sizeof(struct integer)); struct integer *snum2 = malloc(sizeof(struct integer)); struct integer *total = malloc(sizeof(struct integer)); int i, j, runs = 0; fscanf(IFP, "%d", &runs); printf("runs: %d\n", runs); for (i = 0; i < runs; i++){ fscanf(IFP, "%s %s", num1, num2); printf("Problem #%d: ", runs+1); snum1 = convert_integer(num1); print(snum1); printf(" * "); snum2 = convert_integer(num2); print(snum2); printf(" = "); total = multiply(snum1, snum2); //print(total); } free(snum1->digits); free(snum1); free(snum2->digits); free(snum2); fclose (IFP); return 0; }



4Likes
LinkBack URL
About LinkBacks


