Listing 3 fa1.cpp a dynamic array of float

include "fa1.h"
#include <assert.h>

float_array::float_array(size_t n)
   {
   if ((len = n) == 0)
      array = 0;
   else
      {
      array = new float[n];
      assert(array != 0);
      for (int i = 0; i < n; ++i)
         array[i] = 0;
      }
   }

float_array::float_array (const float_array &fa)
   {
   if ((len = fa.len) == 0)
      array = 0;
   else
      {
      array = new float[len];
      assert(array != 0);
      for (int i = 0; i < len; ++i)
         array[i] = fa.array[i];
      }
   }

float_array::~float_array()
   {
   delete [] array;
   }

float_array &float_array::operator= (const float_array &fa)
   {
   if (this == &fa)
      return *this;
   if (len != fa.len)
      {
      delete [] array;
      if ((len = fa.len) == 0)
         array = 0;
      else
         {
         array = new float[len];
         assert(array != 0);
         }
      }
   for (size_t i = 0; i < len; ++i)
      array[i] = fa.array[i];
   return *this;
   }

float &float_array::operator[] (size_t i)
   {
   assert(i < len);
   return array[i];
   }

ostream &operator<<(ostream &os, float_array &fa)
   {
   os << '{';
   size_t i;
   for (i = 0; i < fa.length(); ++i)
      os << ' ' << fa[i];
   return  os << " }";
   }
/* End of File */