home *** CD-ROM | disk | FTP | other *** search
/ Programming Windows 95 / Programming Windows 95.iso / code / CHAP17 / DDEPOP.H next >
Encoding:
C/C++ Source or Header  |  1996-01-01  |  5.5 KB  |  115 lines

  1. /*---------------------------------------------------------------
  2.    DDEPOP.H header file
  3.  
  4.    Data from "The World Almanac and Book of Facts 1992," page 75
  5.   ---------------------------------------------------------------*/
  6.  
  7. #include <time.h>
  8.  
  9. struct
  10.      {
  11.      char       *szState ;
  12.      long        lPop70 ;
  13.      long        lPop80 ;
  14.      long        lPop90 ;
  15.      long        lPop ;
  16.      long        lPopLast ;
  17.      long double a ;
  18.      long double b ;
  19.      long double c ;
  20.      }
  21.      pop[] = {
  22.              "AL",   3444354,   3894025,   4040587, 0, 0, 0.0, 0.0, 0.0,
  23.              "AK",    302583,    401851,    550043, 0, 0, 0.0, 0.0, 0.0,
  24.              "AZ",   1775399,   2716546,   3665228, 0, 0, 0.0, 0.0, 0.0,
  25.              "AR",   1923322,   2286357,   2350725, 0, 0, 0.0, 0.0, 0.0,
  26.              "CA",  19971069,  23667764,  29760021, 0, 0, 0.0, 0.0, 0.0,
  27.              "CO",   2209596,   2889735,   3294394, 0, 0, 0.0, 0.0, 0.0,
  28.              "CT",   3032217,   3107564,   3287116, 0, 0, 0.0, 0.0, 0.0,
  29.              "DE",    548104,    594338,    666168, 0, 0, 0.0, 0.0, 0.0,
  30.              "DC",    756668,    638432,    606900, 0, 0, 0.0, 0.0, 0.0,
  31.              "FL",   6791418,   9746961,  12937926, 0, 0, 0.0, 0.0, 0.0,
  32.              "GA",   4587930,   5462982,   6478216, 0, 0, 0.0, 0.0, 0.0,
  33.              "HI",    769913,    964691,   1108229, 0, 0, 0.0, 0.0, 0.0,
  34.              "ID",    713015,    944127,   1006749, 0, 0, 0.0, 0.0, 0.0,
  35.              "IL",  11110285,  11427409,  11430602, 0, 0, 0.0, 0.0, 0.0,
  36.              "IN",   5195392,   5490214,   5544159, 0, 0, 0.0, 0.0, 0.0,
  37.              "IA",   2825368,   2913808,   2776755, 0, 0, 0.0, 0.0, 0.0,
  38.              "KS",   2249071,   2364236,   2477574, 0, 0, 0.0, 0.0, 0.0,
  39.              "KY",   3220711,   3660324,   3685296, 0, 0, 0.0, 0.0, 0.0,
  40.              "LA",   3644637,   4206116,   4219973, 0, 0, 0.0, 0.0, 0.0,
  41.              "ME",    993722,   1125043,   1227928, 0, 0, 0.0, 0.0, 0.0,
  42.              "MD",   3923897,   4216933,   4781468, 0, 0, 0.0, 0.0, 0.0,
  43.              "MA",   5689170,   5737093,   6016425, 0, 0, 0.0, 0.0, 0.0,
  44.              "MI",   8881826,   9262044,   9295297, 0, 0, 0.0, 0.0, 0.0,
  45.              "MN",   3806103,   4075970,   4375099, 0, 0, 0.0, 0.0, 0.0,
  46.              "MS",   2216994,   2520770,   2573216, 0, 0, 0.0, 0.0, 0.0,
  47.              "MO",   4677623,   4916766,   5117073, 0, 0, 0.0, 0.0, 0.0,
  48.              "MT",    694409,    786690,    799065, 0, 0, 0.0, 0.0, 0.0,
  49.              "NE",   1485333,   1569825,   1578385, 0, 0, 0.0, 0.0, 0.0,
  50.              "NV",    488738,    800508,   1201833, 0, 0, 0.0, 0.0, 0.0,
  51.              "NH",    737681,    920610,   1109252, 0, 0, 0.0, 0.0, 0.0,
  52.              "NJ",   7171112,   7365011,   7730188, 0, 0, 0.0, 0.0, 0.0,
  53.              "NM",   1017055,   1303302,   1515069, 0, 0, 0.0, 0.0, 0.0,
  54.              "NY",  18241391,  17558165,  17990455, 0, 0, 0.0, 0.0, 0.0,
  55.              "NC",   5084411,   5880095,   6628637, 0, 0, 0.0, 0.0, 0.0,
  56.              "ND",    617792,    652717,    638800, 0, 0, 0.0, 0.0, 0.0,
  57.              "OH",  10657423,  10797603,  10847115, 0, 0, 0.0, 0.0, 0.0,
  58.              "OK",   2559463,   3025487,   3145585, 0, 0, 0.0, 0.0, 0.0,
  59.              "OR",   2091533,   2633156,   2842321, 0, 0, 0.0, 0.0, 0.0,
  60.              "PA",  11800766,  11864720,  11881643, 0, 0, 0.0, 0.0, 0.0,
  61.              "RI",    949723,    947154,   1003464, 0, 0, 0.0, 0.0, 0.0,
  62.              "SC",   2590713,   3120729,   3486703, 0, 0, 0.0, 0.0, 0.0,
  63.              "SD",    666257,    690768,    696004, 0, 0, 0.0, 0.0, 0.0,
  64.              "TN",   3926018,   4591023,   4877185, 0, 0, 0.0, 0.0, 0.0,
  65.              "TX",  11198655,  14225513,  16986510, 0, 0, 0.0, 0.0, 0.0,
  66.              "UT",   1059273,   1461037,   1722850, 0, 0, 0.0, 0.0, 0.0,
  67.              "VT",    444732,    511456,    562758, 0, 0, 0.0, 0.0, 0.0,
  68.              "VA",   4651448,   5346797,   6187358, 0, 0, 0.0, 0.0, 0.0,
  69.              "WA",   3413244,   4132353,   4866692, 0, 0, 0.0, 0.0, 0.0,
  70.              "WV",   1744237,   1950186,   1793477, 0, 0, 0.0, 0.0, 0.0,
  71.              "WI",   4417821,   4705642,   4891769, 0, 0, 0.0, 0.0, 0.0,
  72.              "WY",    332416,    469557,    453588, 0, 0, 0.0, 0.0, 0.0,
  73.              "US", 203302031, 226542203, 248709873, 0, 0, 0.0, 0.0, 0.0
  74.              } ;
  75.  
  76. #define NUM_STATES (sizeof (pop) / sizeof (pop[0]))
  77.  
  78. void CalcPops (void)
  79.      {
  80.      int    i ;
  81.      time_t lTime ;
  82.  
  83.      time (&lTime) ;                    // time in seconds since 1/1/70
  84.      lTime -= 92L * 24 * 60 * 60 ;      // time in seconds since 4/1/70
  85.  
  86.      for (i = 0 ; i < NUM_STATES ; i++)
  87.           pop[i].lPop = (long) (pop[i].a * lTime * lTime +
  88.                                 pop[i].b * lTime +
  89.                                 pop[i].c) ;
  90.      }
  91.  
  92. void InitPops (void)
  93.      {
  94.      int         i ;
  95.      long double ldSec80, ldSec90 ;
  96.  
  97.      ldSec80 = 3653.0 * 24 * 60 * 60 ;  // seconds from 4/1/70 to 4/1/80
  98.      ldSec90 = 7305.0 * 24 * 60 * 60 ;  // seconds from 4/1/70 to 4/1/90
  99.  
  100.      for (i = 0 ; i < NUM_STATES ; i++)
  101.           {
  102.           pop[i].a = (ldSec90 * (pop[i].lPop80 - pop[i].lPop70) +
  103.                       ldSec80 * (pop[i].lPop70 - pop[i].lPop90)) /
  104.                      (ldSec90 * ldSec80 * (ldSec80 - ldSec90)) ;
  105.  
  106.           pop[i].b = (ldSec90 * ldSec90 * (pop[i].lPop70 - pop[i].lPop80) +
  107.                       ldSec80 * ldSec80 * (pop[i].lPop90 - pop[i].lPop70)) /
  108.                      (ldSec90 * ldSec80 * (ldSec80 - ldSec90)) ;
  109.  
  110.           pop[i].c = pop[i].lPop70 ;
  111.           }
  112.  
  113.      CalcPops () ;
  114.      }
  115.