/* Functions file for Bank.C */ /* Adam Smyth */ #include #include #include #include "bank.h" void add_a_info(A_INFO *accounts, int num_accts, A_INFO new_acct) /* Add a new account to the array. Uses insertion sort */ { while((num_accts>0)&& ((strcmp(new_acct.acct_n,accounts[num_accts-1].acct_n))<0)) { accounts[num_accts]=accounts[num_accts-1]; num_accts--; } accounts[num_accts]=new_acct; } void get_a_byname(FILE *fout, A_INFO *accounts, int num_accts, char *s) /* Search array (linear search) for all occurances of a particular name */ /* Print them to fout, or, if none found, print 'not-found' message */ { char first[30],last[30]; int found=0; sscanf(s,"%s%s",&last,&first); for(;num_accts>=0;num_accts--) { if((strcmp(accounts[num_accts].last_name,last)==0)&&(strcmp(accounts[num_accts].first_name,first)==0)) { print_a_info(fout,accounts[num_accts]); found=1; } } if(found!=1) fprintf(fout, "\nAccount not found!"); } int get_a_byan(A_INFO *accounts, int num_accts, char *n) /* Binary search for account number, return location in array */ /* or NOT_FOUND */ { int first=0, last=num_accts-1, mid, scr; /* scr = StringCompareResult */ while(first<=last) { mid=(first+last)/2; scr=strcmp(accounts[mid].acct_n,n); if(scr==0) return mid; else if(scr<0) first=mid+1; else if(scr>0) last=mid-1; } return NOT_FOUND; } int del_a(A_INFO *accounts, int num_accts, char *n) /* Remove account from array. Return either former location, or NOT_FOUND */ { int l,i; i=get_a_byan(accounts, num_accts, n); if(i!=NOT_FOUND) { num_accts--; for(l=i;l