home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume8 / graph+ / part02 / cumulate.c < prev    next >
Encoding:
C/C++ Source or Header  |  1987-03-01  |  845 b   |  48 lines

  1. /*
  2.  * Copyright (C) 1986   Alan Kent
  3.  *
  4.  * Permission is granted to freely distribute part or
  5.  * all of this code as long as it is not for profit
  6.  * and this message is retained in the code.
  7.  *
  8.  * No resposibility is taken for any damage or incorect
  9.  * results this program generates.
  10.  * 
  11.  */
  12.  
  13.  
  14. #include <stdio.h>
  15. #include <math.h>
  16. #include "graph.h"
  17. #include "y.tab.h"
  18.  
  19.  
  20.  
  21.  
  22. table_st *
  23. cumulate ( table , attr )
  24. table_st *table;
  25. int attr;
  26. {
  27.     double total;
  28.     double *data;
  29.     int i;
  30.     table_st *p;
  31.  
  32.     total = 0.0;
  33.     p = table;
  34.     if ( attr < 1 )
  35.     abort ( "Cannot CUMULATE on column $0" );
  36.     while ( --attr > 0  &&  p != NULL )
  37.     p = p->next;
  38.     if ( p == NULL )
  39.     abort ( "Illegal column to CUMULATE by" );
  40.     data = p->data;
  41.     for ( i = 0; i < p->size; i++ ) {
  42.     total += data[i];
  43.     data[i] = total;
  44.     }
  45.     return ( table );
  46. }
  47.  
  48.