// program answer for project 1 Fall 2000 in Data Structures // c.f. description in assignment proj1 fall 00 .doc #include class mstring { public: mstring () {len=0; str=NULL; } // construct a NULL string mstring& operator = (char *); int operator == (mstring); const int length() { return len; } char operator [] (int i) { return str[i]; } private: char * str; int len; }; // compare to mstrings for equality int mstring:: operator == (mstring m) { if (len!=m.length()) return 0; for (int i=0; i0) delete str; len=0; while (cstr[len]!='\0') len++; str = new char[len]; for (int i =0; i> (istream& IN, mstring& m) { char inpt[128]; IN >> inpt; m=inpt; return IN; } // output the characters of an mstring ostream& operator << (ostream& OUT, mstring m) { for (int i=0; i> stus[nstus] >> exam1[nstus] >> exam2[nstus]; if (stus[nstus]==finished) break; } // calculate & report stats cout << " There were " << nstus << " students" << endl; int imax= 0; int imin = 0; int i; for (i=0;iexam1[imax]) imax=i; if (exam1[i]exam2[imax]) imax=i; if (exam2[i]> inword; if (inword==finished) break; sinx=mstr_search(stus,nstus,inword); if (sinx