//CIS 610-251: Data Structures and Algorithms. //Assignment #3 Question 9 //Object: Non Recusive FIND(str) #include #include #define STR_SIZE 32 class String { private: char * value; char * temp; public: String() ; String(char*); int Length(); char * Get(); char * SubStr(unsigned,unsigned); bool isAlpha(int); int Find(); }; String::String() { value=new char[STR_SIZE+1]; temp=new char[STR_SIZE+1]; temp[32]=value[32]=NULL; } String::String(char* Str) { value=new char[STR_SIZE+1]; temp=new char[STR_SIZE+1]; temp[STR_SIZE]=NULL; int i=-1; while(Str[++i] && iend) return temp; if (start>STR_SIZE || end>STR_SIZE) return temp; for(;i<=end-1;i++) temp[j++]=value[i]; temp[j++]=NULL; return temp; } //is character n in value Alphabet bool String::isAlpha(int n) { return ((value[n] > 64 && value [n]<90) || (value[n]>96 && value[n]<123))? \ true : false; } //Non-recursive Find. int String::Find(void) { int m=0,n=0; if (!Length()) return 0; if (isAlpha(0)) return 1; if (Length()<2) return 0; strcpy(value,SubStr(2,Length()-1)); if (!Length()) m= 0; if (isAlpha(0)) m= 1; if (Length()<2) m=0; if (!m || Length()==m) return 0; strcpy(value,SubStr(2,Length()-1)); if (!Length()) n= 0; if (isAlpha(0)) n= 1; if (Length()<2) n=0; if (!n) return 0; return 3; } //Main program loop starts here main() { String str("A+C"); cout << str.Find(); return 0; }