frage zu c#
joshua
- programmiertechnik
1 Daniel Thoma0 Vinzenz0 Daniel Thoma0 Vinzenz
0 fk
hallo!
ich habe mich nun seit einiger zeit schon in c# eingearbeitet. nun bräuchte ich für ein Projekt einen Fortschrittbalken. - Graphisch gesehen, habe ich diesen schon hingesetzt. Nun gehts ans programmieren. ich habe überhaupt keine ahnung, wie ich das beginnen soll (mit einem timer??) ... - weiß irgendjemand von euch eine antwort darauf, bzw. eine seite, wo man so was nachlesen kann??
und eine andere frage habe ich noch, obwohl diese eigentlich relativ einfach ist komm ich nicht dahinter. in einem anderen programm (ein normaler taschenrechner) verwende ich u.a. auch einen button zur berechnung einer fakultät. - nun stehe ich wieder vor dem programmieren. es geht mit einer for-schleife, da bin ich mir ziemlich sicher, nur ich weiß nicht weiter... also zzt. bin ich soweit
[...]
sFakult = this.txtZahl.Text;
nFakult = System.Convert.ToDouble(sFakult);
for(int i = 1; i <= nFakult; i++)
{
double nErgebnis;
nErgebnis = nFakult * i;
//hier weiß ich nicht weiter, wie ich das jeweilige ergebnis mit der nächsthöheren zahl multiplizieren lassen kann...
}
this.txtErgebnis.Text = System.Convert.ToString(nFakult);
[...]
danke im voraus für ihre antwort!
Hallo joshua,
double nErgebnis = 1;
for(int i = 2; i <= nFakult; i++)
nErgebnis *= i;
}
Grüße
Daniel
Hallo Daniel,
double nErgebnis = 1;
Eine gewaltige Einschränkung für den zulässigen Bereich von n :-)
Freundliche Grüsse,
Vinzenz
Hallo Vinzenz,
Eine gewaltige Einschränkung für den zulässigen Bereich von n :-)
Fakultäten nicht natürlicher Zahlen kann man ohnehin nicht so einfach berechnen.
Grüße
Daniel
Hallo Daniel,
Eine gewaltige Einschränkung für den zulässigen Bereich von n :-)
Fakultäten nicht natürlicher Zahlen kann man ohnehin nicht so einfach berechnen.
Das meinte ich nicht, ich wollte also keineswegs auf die Gammafunktion anspielen. Vielmehr ist die größte mit dem Datentyp "double" darstellbare Zahl auf heutigen Systemen nicht besonders groß. Da die Fakultätsfunktion gewaltig ansteigt ist die maximale natürliche Zahl, deren Fakultät noch mit einer Zahl des Datentyps double dargestellt werden kann (auf Genauigkeit mal verzichten), noch viel viel kleiner.
Gehen wir mal von einer typischen double von C aus, 8 Byte groß vergleiche http://pronix.linuxdelta.de/C/standard_C/c_programmierung_8.shtml#6 und einem Wertebereich, der bis ca. 1.7E+308 geht, so ist die größte Zahl, für die die Fakultät noch berechnet werden kann die Zahl 170 :-)
Freundliche Grüsse,
Vinzenz
Hallo Vinzenz,
Wenn man größere Fakultäten berechnen will, macht dieser Algortihmus ohnehin keinen Spaß mehr.
Grüße
Daniel
ich habe mich nun seit einiger zeit schon in c# eingearbeitet. nun bräuchte ich für ein Projekt einen Fortschrittbalken. - Graphisch gesehen, habe ich diesen schon hingesetzt. Nun gehts ans programmieren. ich habe überhaupt keine ahnung, wie ich das beginnen soll (mit einem timer??) ... - weiß irgendjemand von euch eine antwort darauf, bzw. eine seite, wo man so was nachlesen kann??
ein fortschrittsbalken soll ja den fortschritt anzeigen.
dazu muß erst einmal festgestellt werden, wann eine sache wohl fertig sein wird.
dann kann der augenblickliche fortschritt prozentual angezeigt werden.
ist aber der fertigstellungszeitpunkt nicht ermittelbar, kann dieser auch nicht in relation zu dem bisherigen gesetzt werden.
bei filetransfer ist so etwas relativ einfach:
die größe der datei ist im vorfeld ja bekannt.
zwischen den übertragungen einzelner blöcke werden diese summiert und in relation zur gesamtmenge als balken angezeigt.
mit einem (asynchronen) timer würde man den fortschritt ja von einer festen endezeit abhängig machen. diese lösung wäre wohl die schlechtere.