コード例 #1
0
/*
 * Insertion point
 */
int main(int argc, char** argv) {
    int i;
    pthread_t first_thread;
    pthread_t second_thread;
    struct transfer_thread_parameter_t first_params;
    struct transfer_thread_parameter_t second_params;
    
    account_balances = malloc(sizeof(float) * 3);
    
    for (i = 0; i < 10; i++) {
        account_balances[i] = 100.0f;
    }

    puts("Before:");
    print_account_balances();

    first_params.from_account = 0;
    first_params.to_account = 1;
    first_params.amount = 200.0f;

    second_params.from_account = 1;
    second_params.to_account = 2;
    second_params.amount = 100.0f;
    
    pthread_create(&first_thread, NULL, transfer_thread, (void*)&first_params);
    pthread_create(&second_thread, NULL, transfer_thread, (void*)&second_params);

    pthread_join(first_thread, NULL);
    pthread_join(second_thread, NULL);

    puts("\nAfter:");
    print_account_balances();

    free(account_balances);

    return EXIT_SUCCESS;
}
コード例 #2
0
// This program allows a teller to enter in account details and the program will calculate account information for the teller
int main() {
  float account_balance;
  char account_type;
  char exit_program_flag = CONTINUE_PROGRAM;
  int total_number_of_accounts = 0;
  float total_amount_in_accounts = 0;
  int minimum_balance_fee = 35;
  int total_minimum_balance_fees = 0;
  int total_accounts_with_minimum_balance_fees = 0;
  int minimum_balance_fee_charged_flag = 0;
  // declare array
  float account_balances[MAX_NUMBER_OF_ACCOUNTS];
  int minimum_balance_fees[MAX_NUMBER_OF_ACCOUNTS];
  
  while (exit_program_flag == CONTINUE_PROGRAM) {
    account_balance = get_account_balance();
    account_type = get_account_type();

    if (account_type == 's') {
      minimum_balance_fee_charged_flag = is_account_below_minimum_balance(account_balance, SAVINGS_ACCOUNT_MINIMUM_BALANCE);
    } else {
      minimum_balance_fee_charged_flag = is_account_below_minimum_balance(account_balance, CHECKING_ACCOUNT_MINIMUM_BALANCE);
    }  
    
    // Display account summary information
    if (minimum_balance_fee_charged_flag) {
      total_accounts_with_minimum_balance_fees++;
      total_minimum_balance_fees += minimum_balance_fee;
      minimum_balance_fees[total_number_of_accounts] = minimum_balance_fee;
      printf ("Minimum Balance Fee to Account Balance Percentage: %.1f%%\n", minimum_balance_fee / account_balance * PERCENT_CONVERSION_FACTOR);
      printf ("The new account balance is $%.2f\n", net_balance(account_balance, minimum_balance_fee));
    } else {
      minimum_balance_fees[total_number_of_accounts] = NO_MINIMUM_BALANCE;
      printf ("Minimum Balance Fee to Account Balance Percentage: %.1f%%\n", NO_MINIMUM_BALANCE / account_balance);
      printf ("The new account balance is $%.2f\n", net_balance(account_balance, NO_MINIMUM_BALANCE));
    }
    
    // Display accounts summary information
    account_balances[total_number_of_accounts] = account_balance;
    
    // add account balance to list of account balances
    update_account_summary_information(&total_number_of_accounts, &total_amount_in_accounts, account_balance);
    
    // Display accounts summary information: 2nd option
    //printf("total_number_of_accounts: %d\n", total_number_of_accounts);
    //account_balances[total_number_of_accounts-1] = account_balance;
    
    exit_program_flag = ask_to_exit();
  }

  printf ("==== Accounts Summary ====\n");
  printf ("The total number of accounts: %d\n", total_number_of_accounts);
  printf ("The total amount in all accounts: $%.2f\n", total_amount_in_accounts);
  printf ("The percentage of the total minimum balance fees with respect to the total account balances: %.1f%%\n", total_minimum_balance_fees / total_amount_in_accounts * PERCENT_CONVERSION_FACTOR);
  printf ("The percentage of accounts that were charged a minimum balance fee: %.1f%%\n", PERCENT_CONVERSION_FACTOR * total_accounts_with_minimum_balance_fees / total_number_of_accounts);
  
  // printout list account balances entered by the teller
  print_account_balances(
    total_number_of_accounts,
    account_balances,
    minimum_balance_fees
  );
  return 0;
}