Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Pascalsches Dreieck darstellen (https://www.delphipraxis.net/87948-pascalsches-dreieck-darstellen.html)

el_presidente 7. Mär 2007 20:05


Pascalsches Dreieck darstellen
 
Guten Abend zusammen =)
Ich bin mir nicht sicher ob dashier das richtige Forum ist wenn nicht tut es mir leid ;-)

Also ich habe folgendes Problem: Aufgabe ist es ein bei Mausklick ein Pascalsches Dreieck Graphisch darstellen zu lassen (also nicht die Zahlen, sondern so (soll nich ganz genau so aussehen nur damit ihr wisst wie ich es ungefähr meine ;) ). Dabei soll immer geprüft werden ob die beiden Pixel die über dem zu prüfenden sind gleich sind. Wenn ja dann soll der geprüfte Pixel grün gefärbt werden, wenn nein dann rot. Der erste und letzte Pixel in jeder Zeile soll immer rot gezeichnet werden. Naja das klappt soweit auch ganz gut. Nur habe ich das Problem das wenn die X-Koordinate der Maus größer als die Y-Koordinate ist nichts gezeichnet wird (was auch logisch ist wenn man sich die Schleife anguckt) und ich nicht genau weiß wie ich das umgehen soll. Das zweite Problem ist, dass er das zwar alles richtig zeichnet, aber irgendwie zeichnet er den ganzen Kram zwei mal und füllt zwischen beiden Exemplaren alles grün aus. Etwas schwer zu erklären, aber ich habe HIER mal das Projekt hochgeladen, dann könnt ihr euch das vllt mal bitte angucken.

Hier mal der Delphicode für mein Vorhaben:
Delphi-Quellcode:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
   Zeile,Zahl: Integer;
begin
  for Zeile:=Y to Y+100 do
   begin
    for Zahl:=X to Zeile do
    begin
     if Zahl=X then Canvas.Pixels[Zahl,Zeile]:=clred
     else if Zahl=Zeile then Canvas.Pixels[Zahl,Zeile]:=clred
     else if Canvas.Pixels[Zahl-1,Zeile-1]=Canvas.Pixels[Zahl,Zeile-1] then
      Canvas.Pixels[Zahl,Zeile]:=clgreen
     else if Canvas.Pixels[Zahl-1,Zeile-1]<>Canvas.Pixels[Zahl,Zeile-1] then
      Canvas.Pixels[Zahl,Zeile]:=clred;
    end;
   end;
end;
Schon mal vielen Dank =))

Reinhard Kern 8. Mär 2007 00:39

Re: Pascalsches Dreieck darstellen
 
Zitat:

Zitat von el_presidente
Guten Abend zusammen =)
Ich bin mir nicht sicher ob dashier das richtige Forum ist wenn nicht tut es mir leid ;-)

Also ich habe folgendes Problem: Aufgabe ist es ein bei Mausklick ein Pascalsches Dreieck Graphisch darstellen zu lassen (also nicht die Zahlen, sondern so (soll nich ganz genau so aussehen nur damit ihr wisst wie ich es ungefähr meine ;) ). Dabei soll immer geprüft werden ob die beiden Pixel die über dem zu prüfenden sind gleich sind. Wenn ja dann soll der geprüfte Pixel grün gefärbt werden, wenn nein dann rot. Der erste und letzte Pixel in jeder Zeile soll immer rot gezeichnet werden. Naja das klappt soweit auch ganz gut. Nur habe ich das Problem das wenn die X-Koordinate der Maus größer als die Y-Koordinate ist nichts gezeichnet wird (was auch logisch ist wenn man sich die Schleife anguckt) und ich nicht genau weiß wie ich das umgehen soll. Das zweite Problem ist, dass er das zwar alles richtig zeichnet, aber irgendwie zeichnet er den ganzen Kram zwei mal und füllt zwischen beiden Exemplaren alles grün aus. Etwas schwer zu erklären, aber ich habe HIER mal das Projekt hochgeladen, dann könnt ihr euch das vllt mal bitte angucken.

Hier mal der Delphicode für mein Vorhaben:
Delphi-Quellcode:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
   Zeile,Zahl: Integer;
begin
  for Zeile:=Y to Y+100 do
   begin
    for Zahl:=X to Zeile do
    begin
     if Zahl=X then Canvas.Pixels[Zahl,Zeile]:=clred
     else if Zahl=Zeile then Canvas.Pixels[Zahl,Zeile]:=clred
     else if Canvas.Pixels[Zahl-1,Zeile-1]=Canvas.Pixels[Zahl,Zeile-1] then
      Canvas.Pixels[Zahl,Zeile]:=clgreen
     else if Canvas.Pixels[Zahl-1,Zeile-1]<>Canvas.Pixels[Zahl,Zeile-1] then
      Canvas.Pixels[Zahl,Zeile]:=clred;
    end;
   end;
end;
Schon mal vielen Dank =))

Hallo,

du redest von einem Pascalschen Dreieck (das enthält die Binomialkoeffizienten) und verlinkst zu einer Sierpinski-Pyramide, das ist eine fraktale Struktur - was willst bzw. sollst du eigentlich? Ausser dass beides dreieckig ist, sehe ich keinen Zusammenhang.

Gruss Reinhard

el_presidente 8. Mär 2007 12:53

Re: Pascalsches Dreieck darstellen
 
tag auch
ja ich weiß das das beides verschiedene Dreiecke sind. darstellen möchte ich ein Pascalsches Dreieck. Den Link habe ich nur gewählt um zu zeigen das ich nicht die Zahlen darstellen will sondern die einzelnen Pixel und hab bei google kein Pascalsches Dreieck in so einer Form gefunden. Naja ich möchte auf jeden fall ein Pascalsches Dreieck ;)

Machts gut
el_presidente


Edit:
Gesagt getan hier das Bild ;)

http://www.asamnet.de/~mrgym/Mathema.../Pascal_T5.jpg

SirThornberry 8. Mär 2007 13:07

Re: Pascalsches Dreieck darstellen
 
Könntest du das Bild bitte an den Beitrag anhängen (als Anlage) damit der Beitrag auch noch vollständig ist wenn das Bild von deinem Webspace verschwunden ist. :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:43 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