C++ ma czasem jakieś takie dziwne wyniki kiedy próbuje zaokrąglać. Jeśli chcesz więcej o tym poczytać polecam google, a jeśli chcesz żeby twój program w ładny sposób działał dobrze możesz użyć funkcji round do zaokrąglania:
http://cpp0x.pl/dokumentacja/standard-C/round/30
Proponuję zatem w 26 linijce dodać:
n = round(n*10)/10;
i będzie:
for(float n=x; 0.1+b>=n; n+=0.1)
{
n = round(n*10)/10;
if(n<=0)
{
cout<<n<<" - "<<2*n+1<<endl;
if(max<2*n+1)
max=2*n+1;
}
if(n>0)
{
cout<<n<<" - "<<sqrt(n)<<endl;
if(max<sqrt(n))
max=sqrt(n);
}
}
co powinno zaradzić na problem dziwnych przybliżeń