Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Rest einer Division durch Rekursion (https://www.delphipraxis.net/123278-rest-einer-division-durch-rekursion.html)

Die absoulte Beginnerin 29. Okt 2008 23:10


Rest einer Division durch Rekursion
 
Hallo,

wir sollten in unserer letzten Informatikstunde eine rekursive Funktion machen, durch die bei einer Division der Restbetrag angegeben wird.

also zum beispiel bei 25:4 die zahl 1 da 25:4=6 rest1

mein ansatz ist jetzt so:
Delphi-Quellcode:
 function reku_div(divident,divisor:integer):integer;
var ergebnis: integer;
begin
 if divident>=divisor
 then reku_div(divident-divisor,divident)
 else ergebnis:=divident;
end;

procedure TForm1.Button1Click(Sender: TObject);
var divident,divisor:integer;
begin
divident:=StrToInt(edit1.text);
divisor:=StrToInt(edit2.Text);
edit3.Text:=IntToStr(reku_div(divident,divisor));
end;
das klappt dann aber leider irgendwie nicht...

kann mir hier vielleicht einer weiterhelfen???

VIELEN DANK!


achso und noch eine frage: woher weiß ich welche programmiersprache ich benutze? also ich arbeite mit delphi sieben aber bei der programmiersprache bin ich mir nicht ganz sicher....

[edit=Sharky]Delphi-Tags gesetzt. Mfg, Sharky[/edit]

Sir Rufo 30. Okt 2008 01:07

Re: Rest einer Division durch Rekursion
 
Willkommen in der DP.

Zitat:

Zitat von Die absoulte Beginnerin
Hallo,

wir sollten in unserer letzten Informatikstunde eine rekursive Funktion machen, durch die bei einer Division der Restbetrag angegeben wird.

also zum beispiel bei 25:4 die zahl 1 da 25:4=6 rest1

Also die kleinste funktionierende Function in Delphi ist die hier:
Delphi-Quellcode:
function Test : integer;
begin
  Result := 1;
end;
Eine function soll ja auch einen Wert zurückliefern :wink: und das hattest du nicht gemacht.
Delphi-Quellcode:
function reku_div( divident, divisor : integer ) : integer;
//var ergebnis: integer; <-- unnötig
begin
 if divident >= divisor
 then
   Result := reku_div( divident - divisor, divisor ) // edit - thanx to Uwe Raabe ;-)
 else
   Result := divident;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 divident, divisor : integer;
begin
  divident  := StrToInt( Edit1.Text );
  divisor   := StrToInt( Edit2.Text );
  Edit3.Text := IntToStr( reku_div( divident, divisor ) );
end;
Wenn ich dein Beispiel jetzt aufnehme, dann wird ja durch die Rekursion das wie folgt aufgerufen:
Delphi-Quellcode:
function( 25, 4) =
  function( 21, 4 ) =
    function( 17, 4 ) =
      function( 13, 4 ) =
        function( 9, 4 ) =
          function( 5, 4 ) =
            function( 1, 4 ) = 1
Zitat:

Zitat von Die absoulte Beginnerin
achso und noch eine frage: woher weiß ich welche programmiersprache ich benutze? also ich arbeite mit delphi sieben aber bei der programmiersprache bin ich mir nicht ganz sicher....

:gruebel: vielleicht Delphi?

cu

Oliver

Die Muhkuh 30. Okt 2008 01:13

Re: Rest einer Division durch Rekursion
 
Zitat:

Zitat von Sir Rufo
Zitat:

Zitat von Die absoulte Beginnerin
achso und noch eine frage: woher weiß ich welche programmiersprache ich benutze? also ich arbeite mit delphi sieben aber bei der programmiersprache bin ich mir nicht ganz sicher....

:gruebel: vielleicht Delphi?

Die Frage ist berechtigt. Generell arbeitet Du mit Delphi, aber erst in den neueren Versionen (2007, 2009) wurde neue Sprachelemente eingeführt. Generics, anonyme Methoden, for-in-Schleife, ...

Die meisten haben jedoch keine neue Version und nutzen auch diese Sprachelemente nicht, deswegen brauchst Du Dir da keine Sorgen machen.

mkinzler 30. Okt 2008 05:38

Re: Rest einer Division durch Rekursion
 
Aber auch dann ist es Delphi

Uwe Raabe 30. Okt 2008 07:03

Re: Rest einer Division durch Rekursion
 
Zitat:

Zitat von Die absoulte Beginnerin
if divident>=divisor
then reku_div(divident-divisor,divident)
else ergebnis:=divident;
...
das klappt dann aber leider irgendwie nicht...

Beim rekursiven Aufruf muss der zweite Parameter der Divisor sein!
Delphi-Quellcode:
if divident>=divisor
 then reku_div(divident-divisor,divisor)
 else ergebnis:=divident;

Sherlock 30. Okt 2008 08:57

Re: Rest einer Division durch Rekursion
 
Zitat:

Zitat von mkinzler
Aber auch dann ist es Delphi

Das ist aber nicht ganz Richtig, denn offiziell ist Delphi eine Entwicklungsumgebung für die Sprache ObjectPascal.
Im allgemeinen Sprachgebrauch wird das zwar Synonym verwendet, aber wenn wir schon so nett drüber sprechen...
;)

Hui, und doch sehe ich gerade, daß dat Dingen offiziell Delphi-Language heisst. Und das auch noch seit 2003. :shock:
http://de.wikipedia.org/wiki/Borland_Delphi

Sherlock

mkinzler 30. Okt 2008 10:36

Re: Rest einer Division durch Rekursion
 
CG ist sich da nicht so sicher, einmal meinen sie die IDE ( jetzt BDS), einmal das Konzept ( D4PHP) und manchmal die Sprache (welche früher ObjektPascal hiess)

divBy0 30. Okt 2008 10:46

Re: Rest einer Division durch Rekursion
 
Wird das nicht auch manchmal DelphiLanguage genannt?

Edit: Sorry, ist ja OT.

Sir Rufo 30. Okt 2008 11:06

Re: Rest einer Division durch Rekursion
 
Zitat:

Zitat von divBy0
Wird das nicht auch manchmal DelphiLanguage genannt?

Ich glaube "Die Absolute Beginnerin" fragt, wegen der Einstellung beim Erstellen des Themas und da handelt es sich eindeutig um "Delphi Win32"
Zitat:

Zitat von divBy0
Edit: Sorry, ist ja OT.

Nö, wieso, danach wurde am Anfang auch gefragt - obwohl pro Thread ja nur eine Frage erlaubt :wink:

cu

Oliver

Die absoulte Beginnerin 30. Okt 2008 15:58

Re: Rest einer Division durch Rekursion
 
ok vielen dank!

und mit der programmiersprache, das hatte mich nur irritiert, weil ich das angeben musste, um einen beitrag zu schreiben...

:)


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz