Autor Beitrag
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 15.02.08 04:11 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Kroko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: Fr 15.02.08 06:46 
(a) verwende in deinen Beiträgen bitte Delphi-Tags und den Style-Guide(Einrückungen), dass ist sonst unlesbar, Danke!

_________________
Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Fr 15.02.08 07:57 
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
procedure TBinomFrm.BinomEnterBtnClick(Sender: TObject);
var
  i,n_fakt,p_fakt,nMINp_fakt,Eing1,
  Eing2,Eing3,Eing4,Wert1,Wert2,Erg1 : integer; //uff. Viel.
  Erg1_1:string;

begin
  n_fakt:=1; //n! Berechnung
  Eing1:=strtoint(edit1.text);
  for i:= 1 to Eing1 do
    n_fakt:=n_fakt*i;
end;

begin
  p_fakt:=1; //p! Berechnung
  Eing2:=strtoint(edit2.text);
  for i:= 1 to Eing2 do
  p_fakt:=p_fakt*i;
end;

begin //Ab hier beginnt das Problem
  Wert1:=strtoint(edit3.Text);
  Wert2:=strtoint(edit4.Text);
  Erg1 := Wert1-Wert2;
  (*Erg1_1:=floattostr(Erg1); //Nur zum testen ob der Rechenvorgang passt
  LoesungAusg.Text:=Erg1; *)


  for i:= 1 to Erg1 do
    nMINp_fakt:=nMINp_fakt*i;
  Hauptfenster.LoesungAusg.Text:=(inttostr(nMINp_fakt));
end;

end;

Was sollen die ganzen Begin-End Blöcke darstellen? Wie auch immer: Fakultät hat die unangenehme Eigenschaft, recht große Zahlen zu produzieren ... :) In der Uni haben wir mal die Fakultät von 1000 per Programm berechnen lassen sollen. Die Berechnung dauerte je nach effizienz des Algorithmus 30 Sekunden bis 2 Stunden+++ und das Ergbniss ging in der Standard Konsolenausgabe über ~20-30 Zeilen :lol:
Versuche mal, dir die Zwischenergebnisse ausgeben zu lassen. Und denk dran, dass du mit den Standarddatentypen nicht wirklich mehr als die Fakultät von 12-15 berechnen kannst, sonst bekommst du falsche Ergebnisse ;) Ich glaube ab 13! crasht's also lass dir mal zwischenergebnisse ausgeben. Ausserdem, schreib dir doch lieber eine Funktion für die Fakultät, das ist übersichtlicher.

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1654
Erhaltene Danke: 244

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Fr 15.02.08 08:00 
Hallo,

man kann bei n über k während der Berechnug sofort kürzen, sodaß keine riesigen Zwischerergebnisse gebraucht werden.
Siehe [url=www.delphi-forum.de/viewtopic.php?t=68531]hier[/url] ganz unten.

Gruß Horst
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 18.02.08 20:23 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Jann1k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: Mo 18.02.08 20:56 
Setz mal nMINp_fakt vor deiner letzten for-Schleife auf 1, der Wert scheint mir in der Prozedur nicht definiert zu sein.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 20.02.08 01:43 
- Nachträglich durch die Entwickler-Ecke gelöscht -