C# Binomicka rovnice

jame9328.03.2012 19:58 (Upr. 28.03.2012 20:10) Nahlásit
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

Přidat odpověď ▾

Diskuze

jame9328.03.2012 20:11 Nahlásit
no jak tak koukam z toho kodu je nesmysl a to jsem to pekne odradkoval ale stejnak je to na ho... Nevite prosim nekdo jak sem vlozit kousek kodu tak aby byl prehledny?
jindřich102428.03.2012 22:25 Nahlásit
A na čem jsi se zasekl, s čím přesně máš problém?

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í...
Přidat komentář do diskuze ▾