/* File: box1.C
   One implementation of class Box.
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "box1.h"


/* Initialize new box with random dimensions. 
   Note: constructors have no return type! not even void */

Box::Box() {
   length = random() ;
   height = random() ;
   width = random() ;
}


/* Report vital stats */
void Box::identify() {
   
   if (length == 0.0 || height == 0.0  || width == 0.0) {
      printf("I am an invisible box\n") ;
   } else {
      printf("I am a box with length=%f, height=%f and width=%f\n",
      length, height, width) ;
   }
}


/* Compute box volume */
float Box::volume() {
   return length * height * width ;
}


/* Double each dimension */
void Box::grow() {
   length = length * 2 ;
   height = height * 2 ;
   width  = width  * 2 ;
}


/* Halve each dimension */
void Box::shrink() {
   length = length / 2 ;
   height = height / 2 ;
   width  = width  / 2 ;
}


/* return random value between 1.0 and 10.0 */
float Box::random() {
   double r ;

   r = drand48() * 9.0 + 1.0 ;
   return (float) r ;
}
