Project 09
Home ] Up ]

 

//Project07.cpp
//Date 09/14/2001
//Auothor: Us

#include <iostream.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>



int const MAX_LEN = 20;

const char *testNames[] = 
  {
  "Chair", "Table", "Spoon", "Book", "Pen", "Eraser",
  "TV", "Stereo", "VCR", "DVD Player", "XBox", "Microwave",
  "Toaster", "Car", "Phone", "Couch", "Calculator",
  "Cookies"
  };

const int MAX_NAMES = sizeof(testNames)/sizeof(testNames[0]);



void testInput(void);
void testSetName(void);
void testSetWeight(void);
void testConstructor(void);
void testConstructorCh(void);
void testConstructorCopy(void);


class CItem
  {
  private:
    char m_name[MAX_LEN+1];
    int m_weight;
  public:
    CItem(void);
    void input(void);
    void display(void) const;
    void set(char name[], int weight);
    void setName(char name[]);
    void setWeight(int weight);

    CItem(char name[], int weight); //09/17/2001
    CItem(char ch); // CItem item('r');
    CItem(const CItem &item); //copy constructor


  };




void main(void)
  {
  srand( (unsigned)time( NULL ) );

  //testInput();
  //testConstructor();
  //testConstructorCh();
  testConstructorCopy();

  }


//CItem (item) copy constructor
/* constructs an object which is a copy given object
*/
CItem::CItem(const CItem &item)
  {
  strcpy(m_name, item.m_name);
  m_weight = item.m_weight;
  }

void testConstructorCopy(void)
  {
  cout << "Test copy Constructor\n";
  CItem item('r');
  CItem item2(item);
  item.display();
  item2.display();
  }

//CItem (ch) constructor
/* constructs an object with random name and weight
*/
CItem::CItem(char ch)
  {
  if ('r' == ch )
      {
      strcpy(m_name, testNames[rand()%MAX_NAMES]);
      m_weight = rand()%100;
      }
    else
      {
      strcpy(m_name, "");
      m_weight = -99;
      }
  }

void testConstructorCh(void)
  {
  cout << "Test Constructor\n";
  CItem item('m');
  item.display();
  item.display();
  item.display();
  item.display();
  }


    
//CItem (name, weight) constructor
/* constructs an object with given name and weight
*/
CItem::CItem(char name[], int weight)
  {
  strcpy(m_name, name);
  m_weight = weight;
  }

void testConstructor(void)
  {
  CItem item("Chair", 150);
  item.display();
  }


void CItem::display(void) const
  {
  cout << "item info: ";
  cout << m_name << ", ";
  cout << m_weight << endl;
  }


CItem::CItem(void)
  {
  cout << "Constructor called\n";
  strcpy(m_name, "");
  m_weight = 0;
  }



///////////////////////////////////////////
//input function
///////////////////////////////////////////
/*
  This is a member function for CItem class
  it gets the name and weight from the keyboard
  and sets the values of name and weight data members
*/
void CItem::input(void)
  {
  cout << "item m_name:   ";
  cin >> m_name;
  cout << "item m_weight: ";
  cin >> m_weight;
  }


void testInput(void)
  {
  cout << "test input function member\n";
  CItem item1;
  item1.display();
  item1.input();
  item1.display();
  }


void CItem::set(char name[], int weight)
  {
  strcpy(m_name, name);
  m_weight = weight;
  }


/* SAMPLE RUN
test input function member
Constructor called
item info: , 0
item m_name:
*/
void leftOver(void)
  {
  /*
  CItem item;
  item.display();

  CItem *p;
  p = &item;
  (*p).display();
  p->display();
  */

  /*
  CItem items[500];
  for (int i=0; i<=499; i++)
    items[i].display();
  */


  /*
  CItem item;
  item.set("Hammer", 200);
  item.display();

  char tname[15];
  int tweight;
  cin >> tname;
  cin >> tweight;
  item.set(tname, tweight);
  item.display();
  */



  /*
  if (item1 == item2)
    cout << "== works\n";
  */

  /*
  cout << item1;
  */

  /*
  if (item1 != item2)
    cout << "!= works\n";
  */

  /*
  cin >> item1;
  */


  }