Witam, mój problem polega na tym, że poniższy program zaczyna wypisywać na ekranie "Bledny wybor! Sprobuj ponownie." (pojedyncze wypisanie tej frazy powinno się wykonać dopiero jako działanie 'else') bez końca, gdy jako promień (zmienna: promien) podamy wartosc będącą ułamkiem dziesiętnym (np. 4,3).
Co należy zmienić, w kodzie aby program działał poprawnie (wyliczał wszystko tak, jak to wylicza przy podaniu liczb całkowitych)?
Dodam, że wszystko kompiluje się poprawnie.
Wzory na pole powierzchni i objętość walca są poprawne i nie wymagają weryfikacji.
Proszę o jakąś sugestię dotyczącą usunięcia tego błędu.
#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
int main()
{
string wybor;
short i;
float promien, wysokosc, pole, objetosc;
cout<<"OBLICZANIE POLA POWIERZCHNI LUB OBJETOSCI WALCA"<<endl;
cout<<"Podaj wartosc dlugosci promienia podstawy: "<<endl;
cin>>promien;
cout<<"Podaj wartosc dlugosci wysokosci: "<<endl;
cin>>wysokosc;
cout<<"Co chcesz policzyc? Jesli Pole - wcisnij 1 lub p, jesli objetosc - wcisnij 2 lub v. Odpowiedz zatwierdz naciskajac 'Enter'."<<endl;
for (i=1; i<2; i)
{ cin>>wybor;
if (wybor == "p" || wybor=="1" )
{
pole=((2*M_PI*promien)*(promien+wysokosc));
cout<<"Pole powierzchni walca o wysokosci "<<wysokosc<<", ktorego dlugosc promienia podstawy wynosi "<<promien<<" jest rowna: "<<setprecision(4)<<fixed<<pole<<".";
i++;
}
else if (wybor == "v" || wybor=="2")
{
objetosc=(M_PI*pow(promien,2)*wysokosc);
cout<<"Objetosc walca o wysokosci "<<wysokosc<<", ktorego dlugosc promienia podstawy wynosi "<<promien<<", jest rowna: "<<setprecision(4)<<fixed<<objetosc<<".";
i++;
}
else
{
cout<<"Bledny wybor! Sprobuj ponownie."<<endl;
}
}
}