Autor Beitrag
Wuesty
Hält's aus hier
Beiträge: 5



BeitragVerfasst: 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

ausblenden 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
ausblenden 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 user profile iconGausi: Code- und Delphi-Tags hinzugefügt
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: 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

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 228

KUbuntu 10.4
Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
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)
BeitragVerfasst: Do 11.01.07 12:28 
Hi,

user profile iconWuesty hat folgendes geschrieben:


ausblenden 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:
ausblenden Delphi-Quelltext
1:
if Self.BraetAndernEineBratwurst then Self.HasBratwurstBratGeraet := true;					
Wuesty Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Do 11.01.07 14:58 
Achja

ausblenden 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


ausblenden Delphi-Quelltext
1:
else  k > n then result := 0					


Ist die betroffene Zeile und genau hinter then
starsurfer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
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++
BeitragVerfasst: Do 11.01.07 15:00 
ausblenden Delphi-Quelltext
1:
else if k > n then result := 0					


damit müsste es gehen...

_________________
GEIZ IST GEIL! - Ihr Sozialamt
Wuesty Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Do 11.01.07 15:01 
user profile iconCorpsman 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 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Do 11.01.07 15:08 
user profile iconstarsurfer hat folgendes geschrieben:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1654
Erhaltene Danke: 244

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: 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.

ausblenden 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
  {triviales abfangen fehlt}
  
  //k mit n-k tauschen, falls es sich lohnt
  i := n-k;
  If k>i then
    k := i;

  result := 1;
  For i := 1 to k do
    begin
    result := (n*result) div i;// Ist immer ohne Rest
    dec(n);
    end;
end;

begin
  n := 49;
  For k := 0 to n do
    writeln(n,'|',k,' = ',binom(n,k));
  readln;
end.



Gruß Horst