Entwickler-Ecke
Sonstiges (Delphi) - Binomialkoeffizient
Wuesty - Mi 10.01.07 17:47
Titel: Binomialkoeffizient
Huhu
Hab schon hier im Forum gesucht, aber nichts passendes gefunden.
Wir sollen einen Taschenrechner programieren, mein Problem ist folgendes, ich bin jetzt beim Binomialkoeffizient, ich hab da auch schon was geschrieben.
Nur jetzt kommt folgende Fehlermeldung
Quelltext
1: 2:
| [Hint] taschenrechner.pas(418): Value assigned to 'binomialkoeffizient' never used [Hint] taschenrechner.pas(417): Value assigned to 'binomialkoeffizient' never used |
Der Quelltext sieht so aus
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| function binomialkoeffizient(n,k: integer):double; begin if k = 0 then result := 1 ; if k > n then result := 0 ; binomialkoeffizient := faculty(n) / (faculty(k) * faculty(n-k)); end;
procedure TForm1.nueberkClick(Sender: TObject); var n,k: integer;
begin n := StrToInt(eingabe.Text); k := StrToInt(eingabe2.Text); eingabe.Text := FloatToStr(binomialkoeffizient(n,k)); end; |
Ich hab auch extra nen 2. Textfeld gemacht, nur kann man auch damit nicht rechnen.
Ich hab echt keine Ahnung mehr :(
Hoffe jemand kann mir vielleicht helfen :)
Lg,
Sarah
Moderiert von
Gausi: Code- und Delphi-Tags hinzugefügt
jaenicke - Mi 10.01.07 17:56
Erstmal :welcome: hier im Forum!
Das, was du da als "Fehler" angegeben hast, ist kein Fehler, sondern ein Hinweis. Aber die Zuweisung von Result beendet die Prozedur nicht! Deshalb solltest du else benutzen, denn sonst wird die letzte Zeile doch ausgeführt und das Ergebnis wird als Rückgabewert zurückgegeben. (Vorausgesetzt du weist dort Result erneut zu...)
Dann: Warum nimmst du in der letzten Zeile nicht auch Result? :gruebel:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| function binomialkoeffizient(n,k: integer):double; begin if k = 0 then Result := 1 else if k > n then Result := 0 else Result := faculty(n) / (faculty(k) * faculty(n-k)); end; |
Dann noch was allgemeines:
Damit der Quelltext korrekt dargestellt wird, benutze bitte die Delphi-Tags!
Hier steht wie das geht:
http://www.delphi-forum.de/help_schreiben_bbcodes_source.html&sub=,19,27,32
Die musst du natürlich nicht selbst tippen, du musst nur über dem Eingabefeld auf Bereiche und in diesem Fall dann auf das Plus hinter Delphi einmal vor und einmal nach dem Code schreiben klicken. Mehr dazu hier:
http://www.delphi-forum.de/help_schreiben_bbcodes.html&sub=,19,27,32
GTA-Place - Mi 10.01.07 17:56
Result ist ja das selbe wie Binomialkoeffizient (Funktionsname), d.h. du überschreibst in allen Fällen Result in der Funktion wieder.
EDIT: GRML, jetzt geht das schon wieder los, dass du schneller bist -_-
Wuesty - Do 11.01.07 12:14
Huch sorry und danke schonmal für die schnelle Antwort :)
Aufjedenfall hatte ich das result weggemacht, weils damit auch nicht wirklich funktionierte und er danach auch nichts mehr angezeigt hat.
Hab es jetzt auch wieder eingefügt die ; weggemacht, jetzt aber nächstes Problem
Delphi-Quelltext
1: 2:
| [Error] taschenrechner.pas(418): Statement expected, but expression of type 'Boolean' found [Fatal Error] Project1.dpr(7): Could not compile used unit 'taschenrechner.pas' |
Joa was sagt mir das jetzt?!
ManniTwo - Do 11.01.07 12:28
Hi,
Wuesty hat folgendes geschrieben: |
Delphi-Quelltext 1: 2:
| [Error] taschenrechner.pas(418): Statement expected, but expression of type 'Boolean' found [Fatal Error] Project1.dpr(7): Could not compile used unit 'taschenrechner.pas' |
Joa was sagt mir das jetzt?! |
also zunächst mal sagt es mir und vermutlich den meisten anderen auch ziemlich wenig, da niemand weiß wie genau jetzt deine Zeile 418, in der der gepostete Fehler auftrat, aussieht.
Poste also noch einmal wie genau dein Quelltext jetzt aussieht und dir wird sicher geholfen. :-)
Gruß,
ManniTwo
Wuesty - Do 11.01.07 14:58
Achja
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| function binomialkoeffizient(n,k: integer):double; begin if k = 0 then result := 1 else k > n then result := 0 else result := faculty(n) / (faculty(k) * faculty(n-k)); end;
procedure TForm1.nueberkClick(Sender: TObject); var n,k: integer;
begin n := StrToInt(eingabe.Text); k := StrToInt(eingabe2.Text); eingabe.Text := FloatToStr(binomialkoeffizient(n,k)); end; |
und
Delphi-Quelltext
1:
| else k > n then result := 0 |
Ist die betroffene Zeile und genau hinter then
starsurfer - Do 11.01.07 15:00
Delphi-Quelltext
1:
| else if k > n then result := 0 |
damit müsste es gehen...
Wuesty - Do 11.01.07 15:01
Erstmal danke *hehe*
Aber ehrlich gesagt hab ich da nicht so den Durchblick und das ist alles ziemlich viel und mir fällt das sowieso ziemlich schwer das alles nachzuvollziehen, da wir bei Delphi ziemlich auf uns alleine gestellt sind und recht wenig bis gar nichts mit dem Kurs zusammen gemacht haben. Also ich selbst hab wenig Grundlagen dafür.
Wuesty - Do 11.01.07 15:08
starsurfer hat folgendes geschrieben: |
Delphi-Quelltext 1:
| else if k > n then result := 0 |
damit müsste es gehen... |
Daaaaaankeschön :)
Und allen anderen auch x) Meine Helden *lol*
Horst_H - Do 11.01.07 15:09
Hallo,
@Corpsman
Dein Programm berechnet n=49 und k= 7 zu einer >negativen< Zahl -687142768.
Ich weiss nicht wie häufig sich das zwischendurch kürzen lohnt, es geht auch so sehr gut und effektiv.
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:
| {$APPTYPE Console} var k,n:integer;
function Binom(n,k:integer): int64; var i : integer; begin i := n-k; If k>i then k := i;
result := 1; For i := 1 to k do begin result := (n*result) div i; dec(n); end; end;
begin n := 49; For k := 0 to n do writeln(n,'|',k,' = ',binom(n,k)); readln; end. |
Gruß Horst
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!