int main(){ bignum valor, aux, total; int n, f, i, bill = 1; char str[MAXDIGITS]; scanf("%d %d", &n, &f); while( n ) { scanf("%s", &str ); stringToBignum( str, &valor ); for( i = 1; i < n; i++ ){ scanf("%s", &str ); stringToBignum( str, &aux ); add_bignum( &valor, &aux, &total ); valor = total; } printf("Bill #%d costs ", bill++ ); print_bignum( &valor ); sprintf( str, "%d", f ); stringToBignum( str, &aux ); divide_bignum( &valor, &aux, &total ); printf(": each friend should pay "); print_bignum(&total); printf("\n\n"); scanf("%d %d", &n, &f); } return 0; }
/** Test Function */ int main( ) { bignum n1, n2, n3, zero; // Instantiate string buffers for big numbers a and b char* a = calloc( MAXDIGITS, sizeof( char ) ); char* b = calloc( MAXDIGITS, sizeof( char ) ); // Get big numbers a and b as strings printf( "a = " ); fgets( a, MAXDIGITS, stdin ); printf( "b = " ); fgets( b, MAXDIGITS, stdin ); // Remove the newline character (if present) from string buffers char* nl; if( ( nl = strchr( a, '\n' ) ) != NULL ) *nl = '\0'; if( ( nl = strchr( b, '\n' ) ) != NULL ) *nl = '\0'; // Create a and b big number instances via the string buffers string_to_bignum( a, &n1 ); string_to_bignum( b, &n2 ); // Test addition add_bignum( &n1, &n2, &n3 ); printf( "a + b = " ); print_bignum( &n3 ); // Test comparison int comparison = compare_bignum( &n1, &n2 ); printf( "a %s b\n", comparison == 0 ? "==" : ( comparison < 0 ? ">" : "<" ) ); // Test subtraction subtract_bignum( &n1, &n2, &n3 ); printf( "a - b = " ); print_bignum( &n3 ); // Test multiplication multiply_bignum( &n1, &n2, &n3 ); printf( "a * b = " ); print_bignum( &n3 ); // Test division int_to_bignum( 0, &zero ); if( compare_bignum( &zero, &n2 ) == 0 ) { printf( "a / b = NaN\n" ); } else { divide_bignum( &n1, &n2, &n3 ); printf( "a / b = " ); print_bignum( &n3 ); } return 0; }
int main(void) { int a,b; bignum n1,n2,n3,zero; while (scanf("%d %d",&a,&b) != EOF) { printf("a = %d b = %d\n",a,b); int_to_bignum(a,&n1); int_to_bignum(b,&n2); add_bignum(&n1,&n2,&n3); printf("addition -- "); print_bignum(&n3); printf("compare_bignum a ? b = %d\n",compare_bignum(&n1, &n2)); subtract_bignum(&n1,&n2,&n3); printf("subtraction -- "); print_bignum(&n3); multiply_bignum(&n1,&n2,&n3); printf("multiplication -- "); print_bignum(&n3); int_to_bignum(0,&zero); if(compare_bignum(&zero, &n2) == 0) printf("division -- NaN \n"); else { divide_bignum(&n1,&n2,&n3); printf("division -- "); print_bignum(&n3); } printf("--------------------------\n"); } return 0; }