C# Binomicka rovnice
Ahoj,
jsem novacek v C# a zkousim si udelat jednoduchy program na matematickou vypomoc :). Ale zasekl jsem se u Binomickych rovnic ta ma zakladni tvar x^n - a = 0:
muj pokus vypoctu vypada takto:
int n;
double mezivypocet, m;
try
{
n = int.Parse(txtN.Text);
m = -n;
double[] binRovniceRealnaCast = new double[n];
double[] bimRovniceImaginarniCast = new double[n];
if (m < 0)
{
mezivypocet = Math.Pow(m, 1 / n);
for (int i = 0; i < n - 1; i++)
{
binRovniceReal[i] = mezivypocet * ((Math.Cos((2 * i * Math.PI)) * (Math.PI / 180)) / n);
bimRovniceImaginarni[i] = mezivypocet * ((Math.Sin((2 * i * Math.PI) * (Math.PI / 180)) / n));
txtResult.Text += "Vysledky Xn: \n " + binRovniceReal[i].ToString();
txtResult.Text += "\n Vysledky C: \n " + nimRovniceImaginarni[i].ToString();
}
}
else
MessageBox.Show("Nefunguje to :)");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
Dekuji za jakoukoliv pomoc.
Odpovědi
Diskuze
Rozhodně není v pořádku, že deklaruješ
double[] binRovniceRealnaCast
a v kódu pak máš
binRovniceReal[i]
To jméno by mělo být stejné... (totéž pro imaginární část) Ale to ti snad VisualStudio podtrhne a chybu vysvětlí, ne?
Namísto void int.Parse(string) použij raději bool int.TryParse(string, out int) - chybné zadání v txtN ti pak hned nezpůsobí výjimku - odchytíš to, když funkce vrátí false, a můžeš chybné zadání adresně ohlásit.
Opravdu chceš aby se text "Vysledky..." připojoval do txtResult.Text pořád dokola znovu? Asi by bylo lepší to inicializovat před cyklem.
A pro takové skládání textu je obecně lepší namísto operátoru += použít objekt typu StringBuilder a jeho metodu Append(). V tomto jednoduchém příkladu je to jedno, ale += je obecně mnohem pomalejší a docela nehezky zachází s pamětí...