AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Pyramide zeichnen

Ein Thema von me2u · begonnen am 15. Mär 2007 · letzter Beitrag vom 7. Apr 2007
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: Pyramide zeichnen

  Alt 15. Mär 2007, 21:31
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.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: Pyramide zeichnen

  Alt 15. Mär 2007, 21:35
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
Christian
  Mit Zitat antworten Zitat
me2u
(Gast)

n/a Beiträge
 
#13

Re: Pyramide zeichnen

  Alt 15. Mär 2007, 21:36
Zitat von 3_of_8:
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.
Mit nicht ganz gerade meine ich das hier:

http://www.directupload.net/images/070315/r58RKrrK.jpg


Courier New ? Irgenwie keine so gute Idee :

http://www.directupload.net/images/070315/wNfddF2K.jpg

Keine Ahnung wieso das jetzt so ist !?


[edit]
AAAAH, es liegt am Code:

Wenn ich
Code:
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, dann sieht es so rechtsbündig aus.

Benutze ich einen anderen Code, dann stimmts.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.035 Beiträge
 
Delphi 12 Athens
 
#14

Re: Pyramide zeichnen

  Alt 15. Mär 2007, 21:38
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


bei dem obrigem Code muß das Leerzeichen halb so breit wie der stern sein
und hier sollte beides gleich breit sein

http://www.delphipraxis.net/internal...ghlight=h%F6he
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#15

Re: Pyramide zeichnen

  Alt 15. Mär 2007, 21:56
da wird in jeder Zeile jeweils dann ein Sternchen zu wenig gesetzt...
Es kommen immer 2 dazu nicht nur eins...
Code:
1 Sternchen...
1      *
1+1   **
2+1  ***
3+1 ****

2 Sternchen...
1      *
1+2   ***
3+2  *****
5+2 *******
Bye Christian
Christian
  Mit Zitat antworten Zitat
me2u
(Gast)

n/a Beiträge
 
#16

Re: Pyramide zeichnen

  Alt 15. Mär 2007, 22:05
Aaaah, jetzt hab ichs geschnallt Danke !

Nur das Doofe daran ist jetzt, dass in der ersten Zeile 3 Sterne stehen.
Delphi-Quellcode:
for i := 0 to 30 do
  Memo1.Lines.Add(StringOfChar(' ', 30 - i) + StringOfChar('*', 1 + i * 2));
Habe es jetzt so gelöst:
Delphi-Quellcode:
for i := 0 to 30 do
  Memo1.Lines.Add(StringOfChar(' ', 30 - i) + StringOfChar('*', -1 + i * 2));
Ich weiß ehrlich gesagt nicht genau WIESO das jetzt so funktioniert, aber es sieht gut aus

http://www.directupload.net/images/070315/QK9tjzRp.jpg

Danke, ihr seid die Geilsten !


[edit] Vergesst es Hab i falsch gehabt, fing an mit for i := 1 und nicht 0. Deshalb war die Rechnung falsch. Stimmt also alles, DANKE [/edit]
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#17

Re: Pyramide zeichnen

  Alt 15. Mär 2007, 22:18
Da hatte ich doch grad selber schnell was zusammengebaut und du hasts selber...

Delphi-Quellcode:
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;
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.

Zitat von me2u:
Ich weiß ehrlich gesagt nicht genau WIESO das jetzt so funktioniert, aber es sieht gut aus
Warum ist ja einfach zu sagen...

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
Angehängte Dateien
Dateityp: rar py_136.rar (3,7 KB, 1x aufgerufen)
Christian
  Mit Zitat antworten Zitat
me2u
(Gast)

n/a Beiträge
 
#18

Re: Pyramide zeichnen

  Alt 7. Apr 2007, 13:47
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:47 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