cout<<"\n\nTHE number of student who got gpa greter than 3 is "<<gp1<<endl;
cout<<"\n\nTHE number of student who got gpa greter than 2 is "<<gp2<<endl;
}
Well, you can't compare an int and a string. 42 is not greater than "apple". Case closed.
The only time you use the > operator is on the line where you have "arr4[i] > 3", and you have failed to provide the definition for arr4. Of course, it must be a container of std::string, based on your error message.
So perhaps... change your arr4 to be an array of doubles instead of strings. And use doubles, not floats.
PS: if( arr4[i] > 3 || arr4[i]==3)
There's an operator that combines > and ==, it's written as >= in C++.