[Jprogramming] quoted ` in targeting copula

Ricardo Forno joinville at keko.com.ar
Tue Jul 10 07:21:03 HKT 2007


Hi Henry Rich.
I found your book on J for C programmers extremely enlightening.
While reading it, I found that the following C program has several errors
:
#include <stdio.h>

#define MAXACCT 500

// Program to process journal and account files, printing

// start/end/avg balance.  Parameters are # days in current

// month, filename of Accounts file, filename of Journal file

void acctprocess(int daysinmo, char * acctfn, char *jourfn)

{

      FILE fid;

      int nacct, acctx;

      float acctno, openbal, xactnday, xactnamt

      struct {

            float ano;            // account number

            float openbal;    // opening balance

            float prevday;    // day number of last activity

            float currbal;      // balance after last activity

            float weightbal; // weighted balance: sum of closing balances

      } acct[MAXACCT];

      // Read initial balances; set day to start-of-month, sum of balances 
to 0

      fid = fopen(acctfn);

      for(nacct = 0;2 == fscanf(fid,"%f%f",acctno,openbal) {

            acct[nacct].ano = acctno;

            acct[nacct].openbal = openbal;

            acct[nacct].prevday = 1;

            acct[nacct].currbal = openbal;

            acct[nacct].weightbal = 0;

            ++nacct;

      }

      fclose(acctfn);

      // Process the journal: for each record, look up the account

      // structure; add closing-balance values for any days that

      // ended before this journal record; update the balance

      fid = fopen(jourfn);

      while(3 == fscanf(fid,"%f%f%f",acctno,xactnday,xactnamt) {

            for(acctx = 0;acct[acctx].ano != acctno;++acctx);

            acct[nacct].weightbal +=

                  acct[nacct].currbal * (xactnday - acct[nacct].prevday);

            acct[nacct].currbal += xactnamt;

            acct[nacct].prevday = xactnday;

      }



      // Go through the accounts.  Close the month by adding

      // closing-balance values applicable to the final balance;

      // produce output record

      for(acctx = 0;acctx < nacct;++acctx) {

            acct[nacct].weightbal +=

                  acct[nacct].currbal * (daysinmo - acct[nacct].prevday);

            printf("Account %d: Opening %d, closing %d, avg %d\n",

                  acct[acctx].ano, acct[acctx].openbal, acct[acctx].currbal,

                   acct[acctx].weightbal/daysinmo);

      }

      fclose(fid);

}



On another subject, I kindly ask your permission to translate your book into 
Spanish.
Regards.
Ricardo M. Forno. 



More information about the Programming mailing list