![]() |
AW: Das Haus vom Nikolaus Konsolenanwendung
So hat man das ganze Haus; bei a wird die Größe eingegeben (Bis max. 80, da es sonst nicht mehr in die Konsole passt :)).
Das mit a MOD ist da sonst die Diagonalen nicht ganz passen würden.
Code:
Viel Spaß damit =)
program Project1;
{$AppType Console} var i, a, c, j: integer; begin a := 10; if (a MOD 2) = 1 then a := a+1; c := (a div 2); for i := 0 to a do begin for j := 0 to a do if (((i=j) and (i>c)) or ((a-j=i) and (j<=c))) then write('X') else write(' '); writeLn end; for i := 0 to a do begin for j := 0 to a do if ((i=0) or (j=0) or (j=a) or (i=a) or (i=j) or (a-j=i)) then write('X') else write(' '); writeLn end; readLn end. |
AW: Das Haus vom Nikolaus Konsolenanwendung
Wenn du
Delphi-Quellcode:
die Y-Achse von -a/2 bis a laufen läßt und die Diagonalen mit
for i := 0 to a do
begin for j := 0 to a do einem "Überlauf" versiehst (
Delphi-Quellcode:
und
ABS(x)
Delphi-Quellcode:
),
x mod (a+1)
dabei noch die senkrechten im negativen Y-Bereich nicht anzeigst, dann kannst du die erste Dachschleife dort mit integrieren. |
AW: Das Haus vom Nikolaus Konsolenanwendung
etwas OT:
alles auf ein zweifarbiges BMP zeichnen das ![]() Dann die erhaltenen Zeichen zeilenweise ausgeben. Grüße Klaus |
AW: Das Haus vom Nikolaus Konsolenanwendung
Zitat:
|
AW: Das Haus vom Nikolaus Konsolenanwendung
Ich komme mir vor als sei ich zurückversetzt in die Zeiten von DOS, 8Bit-PC und Turbopascal.
Da gab es die Procedure GotoXY(x,y). Mit der Konsole geht das auch.
Delphi-Quellcode:
Acht Linien brauchen wir in der richtigen Reihenfolge.
{$APPTYPE CONSOLE}
uses SysUtils, Windows; var TextWindow: TSmallRect; BufferInfo: TConsoleScreenBufferInfo; StdOut: THandle; i,j:Integer; procedure GotoXY(X, Y: Smallint); var NewPos: TCoord; begin Inc(X, TextWindow.Left - 1); Inc(Y, TextWindow.Top - 1); if (X >= TextWindow.Left) and (X <= TextWindow.Right) and (Y >= TextWindow.Top) and (Y <= TextWindow.Bottom) then begin NewPos.X := X; NewPos.Y := Y; SetConsoleCursorPosition(StdOut, NewPos); end; end; begin Rewrite(Output); StdOut := TTextRec(Output).Handle; GetConsoleScreenBufferInfo(StdOut,BufferInfo); TextWindow.Left := 0; TextWindow.Top := 0; TextWindow.Right := BufferInfo.dwSize.X - 1; TextWindow.Bottom := BufferInfo.dwSize.Y - 1; // hier mal eine Diagonale for i:=1 to 20 do begin j:=i*2+10; gotoxy(i,j);write('x'); end; readln; Wenn ich mich richtig erinnere 8! = 8*7*6*5*4*3*2 = 40320 Möglichkeiten. Viel Spaß beim probieren. |
AW: Das Haus vom Nikolaus Konsolenanwendung
Zitat:
Habt ihr die Aufgabe in eurem Kurs eigentlich immer noch? Ich finde es schade dass ihr sowas machen müsst. Bei uns gibt es leider keinen Leistungskurs, aber wenn wir unsere Zeit mit so einem Unsinn verschwenden würden, dann ist das denke ich auch besser so... Liebe Grüße, Valentin |
AW: Das Haus vom Nikolaus Konsolenanwendung
Hallo Valle,
ich weiß man darf den Stift nicht absetzen. Wieviele sind es den nun genau? |
AW: Das Haus vom Nikolaus Konsolenanwendung
Es gibt 88 verschiedene Möglichkeiten das HdN zu Zeichnen.
Wenn man aber die gespiegelten und umgekehrten Wege ignoriert, dann muß man sich nur 22 Wege merken. :stupid: (wenn ich richtig gezählt hab) - man kann eine Linie ja auch rückwärts ablaufen - und das HdN ist horizontal gespiegelt PS: alle Wege beginnen und Enden am Boden |
AW: Das Haus vom Nikolaus Konsolenanwendung
Zitat:
|
AW: Das Haus vom Nikolaus Konsolenanwendung
Laut Wikipedia sind es 44:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:51 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