The following code runs fine for denom <= 11, but it gives a segmentation fault with the gcc compiler and doesn't run at all with other compilers for denom > 11. Please help! Thanks.
Code:#include <stdio.h> void arrage(long *a, long *b); void reduce(long *numer, long *denom, long gcd); int getGCD(long a, long b); int getLCD(long a, long b); main() { long denom, lcd, sumNumer = 1, sumDenom = 1; for(denom = 2; denom <= 11; denom++) { lcd = getLCD(sumDenom, denom); sumNumer = sumNumer * lcd / sumDenom + lcd / denom; sumDenom = lcd; reduce(&sumNumer, &sumDenom, getGCD(sumDenom, sumNumer)); } printf("Sum is: %d/%d or %.5f in decimal form.\n", sumNumer, sumDenom, (double)sumNumer / sumDenom); getchar(); } void arrage(long *a, long *b) { int temp; if(*b > *a) { temp = *a; *a = *b; *b = temp; } } void reduce(long *numer, long *denom, long gcd) { *numer = *numer / gcd; *denom = *denom / gcd; } int getGCD(long a, long b) { int r; arrage(&a, &b); r = a % b; if(r == 0) return b; else return getGCD(b, r); } int getLCD(long a, long b) { return a * b / getGCD(a, b); }



LinkBack URL
About LinkBacks


