![]() |
Re: Pyramide zeichnen
Wenn schon, dann liegt es an Windows bzw. der eingestellten Schriftart. Aber was meinst du überhaupt mit "nicht ganz gerade"? Etwa dass ein Leerzeichen nicht so breit ist wie ein * oder umgekehrt? Dann stell die Schrift auf Courier New.
|
Re: Pyramide zeichnen
Das liegt nicht am Code, das liegt am proportionalen Zeichensatz in deinem Memo, stell zum Beispiel mal auf "Courier New" (ist ein nichtportionaler = alle Zeichen sind gleich breit) um, dann sollte das grade sein.
Seh schon Rot... Bye Christian |
Re: Pyramide zeichnen
Zitat:
![]() Courier New ? Irgenwie keine so gute Idee :D : ![]() Keine Ahnung wieso das jetzt so ist !? [edit] AAAAH, es liegt am Code: Wenn ich
Code:
benutze, dann sieht es so rechtsbündig aus.
y := Memo1.Height;
Memo1.Lines.Clear; for i := 1 to (y div 15) do Memo1.Lines.Add(StringOfChar(' ', (y div 15) - i) + StringOfChar('*', i)); Benutze ich einen anderen Code, dann stimmts. |
Re: Pyramide zeichnen
damit es gleichmäßig wird, solltest du eher in ganzen Zeichen rechnen.
du kannst ja mit schrittgröße und Schriftart experimentieren. z.B. Courier und
Delphi-Quellcode:
for i := 0 to 30 do
Memo1.Lines.Add(StringOfChar(' ', 30 - i) + StringOfChar('*', 1 + i * 2)); [add] keine ahnung? is doch offensichtlich :shock: bei dem obrigem Code muß das Leerzeichen halb so breit wie der stern sein und hier sollte beides gleich breit sein ;) ![]() |
Re: Pyramide zeichnen
da wird in jeder Zeile jeweils dann ein Sternchen zu wenig gesetzt...
Es kommen immer 2 dazu nicht nur eins...
Code:
Bye Christian
1 Sternchen...
1 * 1+1 ** 2+1 *** 3+1 **** 2 Sternchen... 1 * 1+2 *** 3+2 ***** 5+2 ******* |
Re: Pyramide zeichnen
Aaaah, jetzt hab ichs geschnallt :D Danke !
Nur das Doofe daran ist jetzt, dass in der ersten Zeile 3 Sterne stehen.
Delphi-Quellcode:
Habe es jetzt so gelöst:
for i := 0 to 30 do
Memo1.Lines.Add(StringOfChar(' ', 30 - i) + StringOfChar('*', 1 + i * 2));
Delphi-Quellcode:
Ich weiß ehrlich gesagt nicht genau WIESO das jetzt so funktioniert, aber es sieht gut aus :)
for i := 0 to 30 do
Memo1.Lines.Add(StringOfChar(' ', 30 - i) + StringOfChar('*', -1 + i * 2)); ![]() Danke, ihr seid die Geilsten ! :D [edit] Vergesst es :D Hab i falsch gehabt, fing an mit for i := 1 und nicht 0. Deshalb war die Rechnung falsch. Stimmt also alles, DANKE [/edit] |
Re: Pyramide zeichnen
Liste der Anhänge anzeigen (Anzahl: 1)
Da hatte ich doch grad selber schnell was zusammengebaut und du hasts selber... ;)
Delphi-Quellcode:
Ich würd an deiner Stelle das so machen wich ich das gemacht habe (Mit hilfe einer StringListe) kannst ja mal eine 1000 Zeilen Pyramide erstellen, dann weist warum.
Procedure TForm1.cmdGoClick(Sender: TObject);
Var i: Integer; Sl: TStringList; Begin Sl := TStringList.Create; For i := 0 To seLines.Value - 1 Do Begin // seLines.Value = Anzahl der Zeilen Sl.Append( StringOfChar( #32, ( seLines.Value - 1 ) - i ) + StringOfChar( #42, i*2 + 1 ) ); End; txtOut.Text := Sl.Text; End; Zitat:
Du brauchst in der ersten zeile einen Stern in jeder weiteren 2 Sterne mehr... Also ist die Rechnung recht simpel: (Zeilennummer - 1) * 2 + 1 da bei dir (wie auch bei mir) Zeile 1 eigendlich 0 ist wird ganz simpel daraus: Zeilennummer * 2 + 1 So damit hätten wir die Sternchen... Kommen wir zu den Leerzeichen... die Letzte Zeile benötigt also keins und jede Zeile zuvor jeweils eins mehr... Daraus folgt, dass wir die Anzahl der Zeilen kennen müssen! Also ist die Anzahl an Leerzeichen einer Zeile Zeilenanzahl - Zeilennummer da wir beide aber wieder bei 0 statt bei eins anfangen müssen wir noch eins abziehn: Zeilenanzahl - Zeilennummer - 1 Bye Christian |
Re: Pyramide zeichnen
Ok danke an Alle !
Ich habe das meinem Lehrer präsentiert und er hat mir auch die volle Punktzahl, die es bei dieser Aufgabe zu erreichen gab, gegeben. Ihr seid die besten :) :) :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:25 Uhr. |
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