C'ho provato adesso !
Vabbeh, è C#, insomma col Java siamo lì...
Codice:
lst_tentativi.Items.Clear();
lst_tentativi.Visible = false;
// numero massimo di cifre decimali da considerare
int maxNumCifreDec = 14;
string strNumero = txt_numeroinput.Text;
string[] partiNumero = strNumero.Split(',');
string strPIntNumero = partiNumero[0];
string strPDecNumero = partiNumero[1];
if (strPDecNumero.Length > maxNumCifreDec)
{
strPDecNumero = strPDecNumero.Substring(0, maxNumCifreDec);
}
double numero = Convert.ToDouble(strPIntNumero + "," + strPDecNumero);
double risTemp = 0;
string strRisTemp;
string[] partiRisultato;
string strPIntRisult;
string strPDecRisult;
double numTemp = 1;
double denomTemp = 1;
do
{
risTemp = numTemp / denomTemp;
strRisTemp = risTemp.ToString();
partiRisultato = strRisTemp.Split(',');
strPIntRisult = partiRisultato[0];
try
{
strPDecRisult = partiRisultato[1];
}
catch (Exception)
{
//throw;
strPDecRisult = "0";
}
if(strPDecRisult.Length > maxNumCifreDec)
{
strPDecRisult = strPDecRisult.Substring(0, maxNumCifreDec);
}
risTemp = Convert.ToDouble(strPIntRisult + "," + strPDecRisult);
lst_tentativi.Items.Add(numTemp + " / " + denomTemp + " = " + risTemp);
if(risTemp == numero)
{
txt_risnum.Text = numTemp.ToString();
txt_risdenom.Text = denomTemp.ToString();
break;
}
else if ( risTemp > numero )
{
denomTemp += 1;
}
else
{
numTemp += 1;
}
} while (true);
lst_tentativi.Visible = true;
txt_numeroinput = textbox numero input
txt_risnum = textbox numeratore output
txt_risdenom = textbox denominatore output
Riduce anche ai minimi termini...