Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Kleinere Zahlen hinzuzählen (https://www.delphipraxis.net/109396-kleinere-zahlen-hinzuzaehlen.html)

GericasS 29. Feb 2008 13:33


Kleinere Zahlen hinzuzählen
 
Hallo DP,

ich wollte mal fragen wie folgendes in Delphi zu realisieren ist...

ich hab zum Beispiel die Zahl 7 und möchte nun alle Zahlen die kleiner sind als 7 also von 1 (einschließlich 1 :D ) hinzuzählen daraus ergibt sich :

1+2+3+4+5+6+7

LG


GericasS :?:

inherited 29. Feb 2008 13:37

Re: Kleinere Zahlen hinzuzählen
 
Zwei ansätze: Iterativ:
Delphi-Quellcode:
function Summ(a: integer): Integer;
var i: integer;
begin
  result:=0;
  for i := 1 to a do
    result:=result+i;
end;
Rekursiv:
Delphi-Quellcode:
function Summ(a: Integer): Integer;
begin
  if a <=1 then
  begin
    result:=a;
    exit;
  end;
  result:=Summ(a-1)+a;
end;
Ungetestet

sirius 29. Feb 2008 13:37

Re: Kleinere Zahlen hinzuzählen
 
Habt ihr in der Schule grad Einführung in Rekursionen?

GericasS 29. Feb 2008 13:38

Re: Kleinere Zahlen hinzuzählen
 
Zitat:

Zitat von sirius
Habt ihr in der Schule grad Einführung in Rekursionen?

Nein ich will in Delphi ein Beispiel für digitale Abschreibung erstellen :D

Zitat:

Zitat von inherited
Zwei ansätze: Iterativ:
Delphi-Quellcode:
function Summ(a: integer): Integer;
var i: integer;
begin
  result:=0;
  for i := 1 to a do
    result:=result+i;
end;
Rekursiv:
Delphi-Quellcode:
function Summ(a: Integer): Integer;
begin
  if a <=1 then
  begin
    result:=a;
    exit;
  end;
  result:=Summ(a-1)+a;
end;
Ungetestet

danke werds gleich mal versuchen :D

Nikolas 29. Feb 2008 13:46

Re: Kleinere Zahlen hinzuzählen
 
Und wo bleibt der Resourcenschonende Ansatz? (Green IT und so...)

Delphi-Quellcode:
function Summ(n: integer): Integer;
begin
result = n*(n+1)/2.0;
end;

himitsu 29. Feb 2008 13:59

Re: Kleinere Zahlen hinzuzählen
 
so ist das Rechenergebnis eine Fließkommazahl und kein Integer:
also müßte man es noch umwandeln
[add]ohhh und Vergleich statt Zuweisung ... kein ":" :shock: [/add]
Delphi-Quellcode:
function Summ(n: integer): Integer;
begin
  result := Round(n * (n + 1) / 2.0);
end;
oder besser glich bei Integer bleiben:
Delphi-Quellcode:
function Summ(n: integer): Integer;
begin
  result = n * (n + 1) div 2;
end;
aber ich hab noch'n paar Löungen mit Schleifchen :angel:
Delphi-Quellcode:
// Result=0 wenn n negativ
function Summ(n: integer): Integer;
begin
  Result := 0;
  while n >= 1 do
  begin
    Inc(Result, n); //Result := Result + n;
    Dec(n);
  end;
end;
Delphi-Quellcode:
// Result=n wenn n negativ
function Summ(n: integer): Integer;
begin
  Result := 0;
  repeat
    Inc(Result, n); //Result := Result + n;
    Dec(n);
  until n < 1;
end;

sirius 29. Feb 2008 14:00

Re: Kleinere Zahlen hinzuzählen
 
Zitat:

Zitat von Nikolas
Und wo bleibt der Resourcenschonende Ansatz? (Green IT und so...)

Womit bewiesen wäre, dass Gauss ein Grüner war.

Nikolas 29. Feb 2008 14:11

Re: Kleinere Zahlen hinzuzählen
 
Zitat:

[add]ohhh und Vergleich statt Zuweisung ... kein ":"[/add]
Seit dem ich an meinem schönen weißen iBook arbeite, sind meine Syntaxkenntnisse etwas eingeschlafen...
Python ist so eine schöne Sprache und da sinds eben die ==-Vergleiche.

DP-Maintenance 29. Feb 2008 23:06

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Delphi-Frage

GericasS 4. Mär 2008 08:14

Re: Kleinere Zahlen hinzuzählen
 
Zitat:

Zitat von Nikolas
Und wo bleibt der Resourcenschonende Ansatz? (Green IT und so...)

Delphi-Quellcode:
function Summ(n: integer): Integer;
begin
result = n*(n+1)/2.0;
end;

bist du selbst auf diese Formel gekommen oder ist die schon iwo festgelegt ? :zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:21 Uhr.
Seite 1 von 3  1 23      

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