Thema: Delphi Pascalsche Dreieck

Einzelnen Beitrag anzeigen

Benutzerbild von MrMooed
MrMooed

Registriert seit: 18. Feb 2012
101 Beiträge
 
Delphi 7 Enterprise
 
#7

AW: Pascalsche Dreieck

  Alt 1. Jul 2013, 21:00
Ansonsten habe ich mir ein altes Schulprojekt herausgekramt:

Stell dir das Dreieck einfach als 2D-Array vor.
Code:
Ebene: | Ergebnis:
0      |     1
1      |    1 1
2      |   1 2 1
3      |  1 3 3 1
4      | 1 4 6 4 1
Bei dem Dreieck wissen wir als einziges, dass außen immer eine '1' steht. Außerdem sehen wir, dass jede Dimension (Ebene) einen Wert mehr hat, als die vorherige.
D.h. konkret, dass wir ein Array erschaffen müssen, dessen Dimensionen immer um eins incrementiert werden und "außen" den Wert '1' besitzen:

Delphi-Quellcode:
procedure PasDreieck(var Ebenen: Integer);
var
  PasDreieck : Array of Array of Integer;
  i, j : Integer;
begin
for i:=0 to Ebenen -1 do
    begin
      SetLength(PasDreieck[i], i+1); // Länge für jede Ebene um 1 erweitern
      PasDreieck[i,Low(PasDreiech[i])] := 1; // Eins am Anfang
      PasDreieck[i,high(PasDreieck[i])] := 1; // Eins am Ende
    end;
end;
Wie man aus der Tabelle sehen kann, müssen wir erst ab der 3. Ebene anfangen zu rechnen - davor kommen nur unsere Einsen vor

Delphi-Quellcode:
for i:=2 to Ebene -1 do
  for j:=1 to High(PasDreieck[i]) -1 do
    begin
      PasDreieck[i,j] := PasDreieck[i-1,j-1] + PasDreieck[i-1, j];
    end;
Und das Array kannst du nun in welcher Form auch immer du willst ausgeben.

Delphi-Quellcode:
for i:=Low(PasDreieck) to High(PasDreieck) do
  for b:=Low(PasDreieck[i]) to High(PasDreieck[i]) do
    StringGrid1.Cells[i,b] := IntToStr(PasDreieck[i,b]);
Wäre z.B. eine von vielen Möglichkeiten

Geändert von MrMooed ( 2. Jul 2013 um 20:34 Uhr)
  Mit Zitat antworten Zitat