Only problem I can see is if the user enters only negative numbers it will report the largest as being 0. If you instead initialize max to std::numeric_limits<float>::min() (smallest finite float value) you would not have this problem.
if (array[e]<array[r])
{
max=array[r];
array[e]=array[r];
max=array[e];
}
Well, that's definitely wrong. Why would finding the max element require modifying the array? Why would you need to throw away the value of max immediately after assigning it? In addition max holds some unspecified value for an array of elements holding the same value. Why does the code only check 5 elements out of 100? Initializing array elements to some value may also be important if you wish to verify the code is correct by running it.