Autor Beitrag
gs1905
Hält's aus hier
Beiträge: 10



BeitragVerfasst: So 28.09.08 22:27 
ich weiss nicht wie ich die fakultät mit delphi machen soll ich hab im forum auch mich durchgeschaut aber habe nichts verstanden.weiss nur dass n=(n-1)*n
pennyWISE
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 49

Win XP
Delphi 2005 PE (getunt), QBasic 4.5
BeitragVerfasst: So 28.09.08 22:29 
habt ihr zufällig die aufgabe das rekursiv und iterativ zu machen?

€:
ich könnte dir natürlich den quellcode geben, aber der is (mindestens als iterativer Code) eigentlich ziemlich einfach, sodass du auch von alleine drauf kommen könntest.
Eine Fakultät einer bestimmten natürlichen Zahl bedeutet, dass alle natürlichen zahlen von 1 bis zu dieser Zahl mit einander multipliziert werden. Also: 3! = 1 * 2 * 3 = 6

_________________
„Philosophie ist der Versuch, eine schwarze Katze in einem dunklen Zimmer zu fangen. Theologie ist der Versuch, eine schwarze Katze in einem dunklen Zimmer zu fangen, jedoch eine Katze, die gar nicht im Zimmer ist - und immer zu rufen: Ich hab' sie!“
gs1905 Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: So 28.09.08 22:33 
also wir sollten es einfach machen er hat uns nicht gesagt wie aber wir sollten auch potenzieren deswegen gluab ich das erste

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

rekursiv glaub ich

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

also ich weiss auch was eine fakultät ist aber ich kann nicht die codes herleiten das ist mein problem

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

also ich hab 2 labels zahl und fakultät mit 2 edit fenster dann noch 3 buttons fakultät,clear und beenden
jetzt drucke ich auf fakultät gebe a,b:integer; oder?
pennyWISE
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 49

Win XP
Delphi 2005 PE (getunt), QBasic 4.5
BeitragVerfasst: So 28.09.08 22:42 
also generell: Rekursive funktionen rufen sich selbst auf, solange bis eine Abbruchbedingung erfüllt wird.

Bei der Fakultät ist die Abbruchbedingung 0! = 1 oder, weil es aufs selbe rauskommt 1! = 1.
bzw übersetzt in Delphi:

ausblenden Delphi-Quelltext
1:
2:
if n = 0 then result:=1
         else blabla


wo blabla steht, kommt der selbstaufruf rein. und den haste ja vorhin schon selbst beschrieben ergebnis=(n-1)! * n

ps: aber was ne funktion ist, weißt du oder? bzw. wie sie aufgebaut ist

€: delphitags geschlossen

_________________
„Philosophie ist der Versuch, eine schwarze Katze in einem dunklen Zimmer zu fangen. Theologie ist der Versuch, eine schwarze Katze in einem dunklen Zimmer zu fangen, jedoch eine Katze, die gar nicht im Zimmer ist - und immer zu rufen: Ich hab' sie!“
gs1905 Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: So 28.09.08 22:46 
weiss ich leider net!!!

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

wie kann mann den function machen wenn ich das hab hab ich fakultät rest hab ich verstanden
pennyWISE
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 49

Win XP
Delphi 2005 PE (getunt), QBasic 4.5
BeitragVerfasst: So 28.09.08 23:03 
ok, dann erzähl ich dir mal ein bisschen was, damit du deine hausaufgabe zu morgen hast, aber dafür versprich bitte, dass du das Tutorial liest, dass man dir im anderen thread vorgeschlagen hat ^^

also eine funktion ist (genau wie in mathe) ein ding, wo du ne zahl reinsteckst, dann macht es ein bisschen was mit der zahl und liefert dir daraus ein ergebnis. Genauso is das beim Programmieren auch. Funktionen werden ähnlich definiert wie prozeduren, bloß dass noch ein rückgabewert deklariert wird. d.h.:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
function TForm1.fakultaet(n: word): word;
begin

end;


function zeigt an, dass du jetzt eine Funktion deklarierst, TForm1. besagt, dass diese Funktion Teil der Klasse TForm1 (Dein Fenster) ist. fakultaet ist der Name der Funktion, (n:word) gibt an, welche Zahlen man ihr übergeben kann. (entspricht wie in Mathe f(x) --> x € N) Word bezeichnet die positiven ganzen Zahlen.
: word sagt aus, dass die funktion eine als Ergebnis wiederum eine positive ganze Zahl ausgeben wird.

Zwischen begin und end schreibst du nun den Quelltext, der verantwortlich dafür ist, was mit dem übergebenem wert geschehen soll. in Mathe wär es bei der funktion f(x)=3x+4 der Teil 3x+4.

also dazwischen kommt jetzt

ausblenden Delphi-Quelltext
1:
2:
if n=0 then result:=1
       else result:=fakultaet(n-1)*n;


result ist die variable, in der das Ergebnis der Funktion ausgegeben wird. Alternativ geht auch der Name der Funktion, also

ausblenden Delphi-Quelltext
1:
2:
if n=0 then fakultaet:=1
       else fakultaet:=fakultaet(n-1)*n;


und in deiner Button1Click - prozedur rufst du die funktion auf

ausblenden Delphi-Quelltext
1:
edit2.text=IntToStr(fakultaet(StrToInt(edit1.text)));					


oder besser verständlich:

ausblenden Delphi-Quelltext
1:
2:
3:
n:=StrToInt(edit1.text);
ergebnis:=fakultaet(n);
edit2.Text:=IntTostr(ergebnis);


dann musst du noch drauf achten, deine funktion in deiner Klasse zu deklarieren.
Also da wo die ganzen anderen prozedurennamen untereinander stehen einfügen
function fakultaet(n:word): word;

_________________
„Philosophie ist der Versuch, eine schwarze Katze in einem dunklen Zimmer zu fangen. Theologie ist der Versuch, eine schwarze Katze in einem dunklen Zimmer zu fangen, jedoch eine Katze, die gar nicht im Zimmer ist - und immer zu rufen: Ich hab' sie!“
gs1905 Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: So 28.09.08 23:22 
ar
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:
  Form1: TForm1;
  fakultaet,zahl:integer;
implementation

{$R *.dfm}

  function TForm1.fakultaet(zahl: integer): integer;
begin

  if zahl=0 then result:=1
       else result:=fakultaet(zahl-1)*zahl;

  end;

procedure TForm1.Button1Click(Sender: TObject);
begin

 edit2.text=IntToStr(fakultaet(StrToInt(edit1.text)));

end;

end.
jetzt hab ich es so aber oben bei function gibt es glaub ich ein problem wenn ich das programm starten will steht da undeclared idetifier fakultaet. mit diesem function muss ich es einfach dorthin schreiben also als code oder muss ich irgendwo hindrücken damit es aaktiviert wird also von alleine im code erscheint?

ich hab wie gesagt 2 edit fenster 2 label und 3 button(fakultät,clear,beenden)
Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
pennyWISE
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 49

Win XP
Delphi 2005 PE (getunt), QBasic 4.5
BeitragVerfasst: So 28.09.08 23:29 
ausblenden Delphi-Quelltext
1:
2:
  var ... 
  fakultaet,zahl:integer;


das brauchst du nicht. zahl deklarierst du eh innerhalb der kopfzeile der function.
fakultaet selbst ist eine funktion und keine integervariable, hat dort also nichts zu suchen

irgendwo oben in deiner Unit steht doch
ausblenden Delphi-Quelltext
1:
procedure Button1Click(Sender: TObject);					


dadrunter schreibst du jetzt

ausblenden Delphi-Quelltext
1:
function fakultaet(zahl: integer): integer;					

_________________
„Philosophie ist der Versuch, eine schwarze Katze in einem dunklen Zimmer zu fangen. Theologie ist der Versuch, eine schwarze Katze in einem dunklen Zimmer zu fangen, jedoch eine Katze, die gar nicht im Zimmer ist - und immer zu rufen: Ich hab' sie!“
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: So 28.09.08 23:32 
Moin und :welcome: im Forum!

user profile icongs1905 hat folgendes geschrieben:
ausblenden Delphi-Quelltext
1:
2:
3:
function TForm1.fakultaet(zahl: integer): integer;
begin
  if zahl=0 then result:=1
Also ich würde das weglassen und die Funktion allgemein deklarieren, statt nur in der Formularklasse. Kann man doch von überall aus gebrauchen. :idea: ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
gs1905 Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: So 28.09.08 23:44 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TForm1.Button1Click(Sender: TObject);
 begin
 edit2.text:=IntToStr(fakultaet(StrToInt(edit1.text)));
 end;


function fakultaet(zahl: integer): integer;
begin

  if zahl=0 then result:=1
       else result:=fakultaet(zahl-1)*zahl;

  end;


end.


hier ich habs jetzt so aber es lauft leide immer noch net

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt, bitte demnächst selber machen mit [delphi] Delphi-Code [/delphi]
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: So 28.09.08 23:50 
Moin!

user profile icongs1905 hat folgendes geschrieben:
hier ich habs jetzt so aber es lauft leide immer noch net
Ob du es wohl schaffst, auch mehr als "geht nicht" zu sagen? :? Was geht nicht, welche Fehlermeldung? :nixweiss:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
pennyWISE
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 49

Win XP
Delphi 2005 PE (getunt), QBasic 4.5
BeitragVerfasst: So 28.09.08 23:52 
user profile iconNarses hat folgendes geschrieben:
Also ich würde das weglassen und die Funktion allgemein deklarieren, statt nur in der Formularklasse. Kann man doch von überall aus gebrauchen. :idea: ;)


da hast du sicherlich recht, bloß hättest du dazu schreiben müssen, wo man das macht, das weiß er nämlich nicht (und ich, muss ich zugeben, hab es auch vergessen, vllt sollte ich es mir aber angewöhnen ;) )
war es im var teil oder unter implementation?

_________________
„Philosophie ist der Versuch, eine schwarze Katze in einem dunklen Zimmer zu fangen. Theologie ist der Versuch, eine schwarze Katze in einem dunklen Zimmer zu fangen, jedoch eine Katze, die gar nicht im Zimmer ist - und immer zu rufen: Ich hab' sie!“
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: So 28.09.08 23:54 
Moin!

user profile iconpennyWISE hat folgendes geschrieben:
da hast du sicherlich recht, bloß hättest du dazu schreiben müssen, wo man das macht, das weiß er nämlich nicht (und ich, muss ich zugeben, hab es auch vergessen, vllt sollte ich es mir aber angewöhnen ;) )
Ich hatte es doch mit dem Highlight-Tag markiert. ;) Er hat´s ja auch hingekriegt (wenn er jetzt noch auf die richtige Reihenfolge kommt, läuft´s ja auch).

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
gs1905 Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: So 28.09.08 23:57 
ich hab jawohl danke euch vielmals danke danke danke ohne euch hätte ich es nicht geschaft dankeeeeee :o :o :o :o :o :o
pennyWISE
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 49

Win XP
Delphi 2005 PE (getunt), QBasic 4.5
BeitragVerfasst: So 28.09.08 23:59 
Ich meinte auch nicht die highlights, sondern die "Allgemeine Deklaration", von der du sprachst. die sieht ja so ziemlich genau aus wie die deklaration innerhalb der klasse, steht nur woanders. nur weiß ich nich, wo die deklaration steht.
Direkt nach dem "end;" der Klassendeklaration oder?

€: Na, wenn du es geschafft hast, isses ja auch wurscht ^^ herzlichen glückwunsch und lies verdammt noch mal das tutorial :P

_________________
„Philosophie ist der Versuch, eine schwarze Katze in einem dunklen Zimmer zu fangen. Theologie ist der Versuch, eine schwarze Katze in einem dunklen Zimmer zu fangen, jedoch eine Katze, die gar nicht im Zimmer ist - und immer zu rufen: Ich hab' sie!“
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 29.09.08 00:02 
Moin!

user profile iconpennyWISE hat folgendes geschrieben:
Ich meinte auch nicht die highlights, sondern die "Allgemeine Deklaration", von der du sprachst. die sieht ja so ziemlich genau aus wie die deklaration innerhalb der klasse, steht nur woanders. nur weiß ich nich, wo die deklaration steht.
Direkt nach dem "end;" der Klassendeklaration oder?
Ach so :think: ich hab´ dich nicht richtig verstanden. :oops:

Es muss vor dem implementation sein; ich schreib´s immer hinter den letzten type-Block vor dem var-Block. :nixweiss:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
gs1905 Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Mo 29.09.08 00:02 
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:
var
  Form1: TForm1;
  n,ergebnis:integer;

function TForm1.fakultaet(n: integer): integer;
begin  
  if n=0 then result:=1
       else result:=fakultaet(n-1)*n;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   n:=StrToInt(edit1.text);
ergebnis:=fakultaet(n);  
edit2.Text:=IntTostr(ergebnis); 
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
edit1.clear;
edit2.clear;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
close
end;


ich danke euch allen vielmals für eure Hilfe.Ohne eure Hilfe hätte ich es nicht geschaft danke danke!!!!!!!


Zuletzt bearbeitet von gs1905 am Mo 29.09.08 00:06, insgesamt 1-mal bearbeitet
pennyWISE
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 49

Win XP
Delphi 2005 PE (getunt), QBasic 4.5
BeitragVerfasst: Mo 29.09.08 00:04 
user profile iconNarses hat folgendes geschrieben:
Ach so :think: ich hab´ dich nicht richtig verstanden. :oops:


hehe, np ^^ .. na dann meinte ich ja zuletzt doch das richtige ;)

naja, jetzt hat er's in der TForm1. variante gemacht, geht ja auch, is nur nich so elegant ^^

_________________
„Philosophie ist der Versuch, eine schwarze Katze in einem dunklen Zimmer zu fangen. Theologie ist der Versuch, eine schwarze Katze in einem dunklen Zimmer zu fangen, jedoch eine Katze, die gar nicht im Zimmer ist - und immer zu rufen: Ich hab' sie!“