Entwickler-Ecke

Sonstiges (Delphi) - Im Memofeld ein Dreieck darstellen


aljo1986 - Fr 15.11.02 10:33
Titel: Im Memofeld ein Dreieck darstellen
Hallo,

ich brauche schnelle Hilfe bitte!

Also ich muss als Hausaufgabe ein Programm schreiben!

Die Aufgabe lautet: ein Edit feld und ein memofeld und ein button. Im memofeld sollen am schluss ein Dreieck aus Sternchen entstehen in einer geordneten reihenfolge das heisst dass es auch wirklich ein Dreieck ergibt.

Ich habe es jetzt schon so weit programmiert, dass ich die sternchen in ungeordneter reihenfolge habe.Aber jetzt komme ich nicht mehr weiter.

Bitte helft mir (schnell) und führt dass programm weiter bis die sternchen in geordneter Reihenfolge (Dreieck) erscheinen. Hier ist mein Ansatzprogramm:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.Button1Click(Sender: TObject);
var k,j,n : integer;
        s : string;
begin
n:=strtoint(Edit1.Text);
for k:=1 to n do
    begin
    for j:=1 to (2*k-1) do
        s:=s+ '*';
        memo1.lines.add(s);
        s:=' ';
    end;
end;

so funzt es aber halt in ungeordneter reihenfolge.

Vielen Dank für eure Hilfe

mfg aljo

(15.11.02 13:08 Tino) Code-Tags hinzugefügt. Titel geändert. Topic verschoben.


Delete - Fr 15.11.02 10:43

Wozu das Edit und was verstehst du unter "geordnet"?


aljo1986 - Fr 15.11.02 10:49

oh tschuldigung also ins edit feld gibt man die anzahl der Reihen ein von dem dreieck. Also wenn ich z.b. 3 eingebe soll es so aussehen:

*
***
*****


aljo1986 - Fr 15.11.02 10:51

geordnet heisst dann dass die einzelnene Sterne zentriert sind in jeder Zeile

.................... *
...................***
..................*****

die pkt am anfang, die ich hier gemacht habe natürlich nicht !
und bei meinem Programm sieht es im moment noch so aus

*
***
*****


Delete - Fr 15.11.02 10:55

Erstmal brauchst du eine Schrift mit fester Zeichenbreite. Dann mußt du kucken, wie breit das ganze bei gegebener zeilen zahl wird um dann entsprechend Leerzeichen einfügen zu kännen.


LCS - Fr 15.11.02 11:08

Hi
Wenn x die Anzahl der zu erzeugenden Zeilen ist:

Quelltext
1:
2:
3:
4:
  for i := 1 to x do begin
    sz := StringOfChar(' ', (x-i)) + StringOfChar('*', (i-1) * 2 + 1);
    memo1.lines.add(sz);
  end;


Gruss Lothar