2001

Grusel++ of the month

Home
Download Source
/******************************************************************************/
/*                                                                            */
/*                                                             FILE: june.cpp */
/*                                                                            */
/*  I stumbled over quite an expressive double today                          */
/*  ================================================                          */
/*                                                                            */
/*  Compiled and tested with Visual C++ V6.0                                  */
/*                                                                            */
/*  V1.00   30-JUN-2001   P. Tellenbach   http://www.heimetli.ch/             */
/*                                                                            */
/******************************************************************************/

#include <iostream>

struct
{
  char   ch  ;
  double dbl ;
} table[] = {
  { '\0', 0.07142857142857140 },
  { ' ',  0.21428571428571400 },
  { '!',  0.28571428571428600 },
  { 'd',  0.35714285714285700 },
  { 'e',  0.42857142857142900 },
  { 'l',  0.64285714285714300 },
  { 'o',  0.78571428571428600 },
  { 'r',  0.85714285714285700 },
  { 'w',  0.92857142857142800 },
  { 'H',  1.00000000000000000 } }, *pt ;

int main( )
{
   double lower, value = 0.956894131554267 ;

   for( ;; )
   {
      for( pt = table, lower = 0.0; pt->dbl < value; pt++ )
         lower = pt->dbl ;

      if( pt->ch == '\0' )
         return 0 ;

      std::cout << pt->ch ;

      value = (value - lower) / (pt->dbl - lower) ;
   }
}