Autor |
Beitrag |
Wuesty
Hält's aus hier
Beiträge: 5
|
Verfasst: Mi 10.01.07 17:47
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
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 10.01.07 17:56
Erstmal  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?
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:
www.delphi-forum.de/...ml&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:
www.delphi-forum.de/...ml&sub=,19,27,32
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: 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 -_-
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
Wuesty 
Hält's aus hier
Beiträge: 5
|
Verfasst: 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?!
|
|
Corpsman
      
Beiträge: 228
KUbuntu 10.4
Lazarus
|
Verfasst: Do 11.01.07 12:27
hier Empfehle ich dir mal dieses Kleine Sample von mir. damit kannst du dann auch so sachen wie 49 über 6 berechnen.
_________________ --
Just Try it.
|
|
ManniTwo
      
Beiträge: 46
Win XP SP III, Ubuntu 8.04, Debian 5.0
Delphi 5 Pro; Delphi 2005; C++,C# (VS 2005); Java, Ruby (Eclipse)
|
Verfasst: 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
_________________ Wer andern eine Bratwurst brät, der hat ein Bratwurst-Brat-Gerät, oder anders:
Delphi-Quelltext 1:
| if Self.BraetAndernEineBratwurst then Self.HasBratwurstBratGeraet := true; |
|
|
Wuesty 
Hält's aus hier
Beiträge: 5
|
Verfasst: 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
      
Beiträge: 334
Win 95, Win 98, Win XP, Win Vista, Linux
D5 Enterprise ,D2005, D6 Personal, Visual C++ Express 2005, C++ Builder 6 E, Dev-C++
|
Verfasst: Do 11.01.07 15:00
Delphi-Quelltext 1:
| else if k > n then result := 0 |
damit müsste es gehen...
_________________ GEIZ IST GEIL! - Ihr Sozialamt
|
|
Wuesty 
Hält's aus hier
Beiträge: 5
|
Verfasst: Do 11.01.07 15:01
Corpsman hat folgendes geschrieben: | hier Empfehle ich dir mal dieses Kleine Sample von mir. damit kannst du dann auch so sachen wie 49 über 6 berechnen. |
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 
Hält's aus hier
Beiträge: 5
|
Verfasst: Do 11.01.07 15:08
|
|
Horst_H
      
Beiträge: 1654
Erhaltene Danke: 244
WIN10,PuppyLinux
FreePascal,Lazarus
|
Verfasst: 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
|
|
|