/* * 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; }
// 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; }