Esempio n. 1
0
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;
}
Esempio n. 3
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;
}