Delphi-PRAXiS
Seite 4 von 5   « Erste     234 5      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Das Haus vom Nikolaus Konsolenanwendung (https://www.delphipraxis.net/162394-das-haus-vom-nikolaus-konsolenanwendung.html)

AoN 2. Sep 2011 18:13

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:
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.
Viel Spaß damit =)

himitsu 2. Sep 2011 18:46

AW: Das Haus vom Nikolaus Konsolenanwendung
 
Wenn du
Delphi-Quellcode:
for i := 0 to a do
  begin
   for j := 0 to a do
die Y-Achse von -a/2 bis a laufen läßt und die Diagonalen mit
einem "Überlauf" versiehst (
Delphi-Quellcode:
ABS(x)
und
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.

Klaus01 2. Sep 2011 20:03

AW: Das Haus vom Nikolaus Konsolenanwendung
 
etwas OT:

alles auf ein zweifarbiges BMP zeichnen das BMP nach AsciiArt umwandeln.

Dann die erhaltenen Zeichen zeilenweise ausgeben.

Grüße
Klaus

Sir Rufo 2. Sep 2011 22:16

AW: Das Haus vom Nikolaus Konsolenanwendung
 
Zitat:

Zitat von Klaus01 (Beitrag 1121389)
etwas OT:

alles auf ein zweifarbiges BMP zeichnen das BMP nach AsciiArt umwandeln.

Dann die erhaltenen Zeichen zeilenweise ausgeben.

Grüße
Klaus

oder auf einen Zettel malen, einscannen, OCR und dann ausgeben :mrgreen:

Singlepin 3. Sep 2011 08:43

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:
{$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;
Acht Linien brauchen wir in der richtigen Reihenfolge.
Wenn ich mich richtig erinnere 8! = 8*7*6*5*4*3*2 = 40320 Möglichkeiten.
Viel Spaß beim probieren.

Valle 3. Sep 2011 12:11

AW: Das Haus vom Nikolaus Konsolenanwendung
 
Zitat:

Zitat von Singlepin (Beitrag 1121449)
Wenn ich mich richtig erinnere 8! = 8*7*6*5*4*3*2 = 40320 Möglichkeiten.

Das ist nicht korrekt. Du kannst ja nicht mit der Linie am Boden anfangen und direkt zum Dach springen. Da gibt es wesentlich weniger Möglichkeiten. ;-)

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

Singlepin 3. Sep 2011 12:31

AW: Das Haus vom Nikolaus Konsolenanwendung
 
Hallo Valle,

ich weiß man darf den Stift nicht absetzen.
Wieviele sind es den nun genau?

himitsu 3. Sep 2011 13:24

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

Jumpy 3. Sep 2011 19:32

AW: Das Haus vom Nikolaus Konsolenanwendung
 
Zitat:

Zitat von himitsu (Beitrag 1121491)
PS: alle Wege beginnen und Enden am Boden

Graphentheorie, oder? Lang, lang ist's her...

Luckie 3. Sep 2011 19:43

AW: Das Haus vom Nikolaus Konsolenanwendung
 
Laut Wikipedia sind es 44: http://de.wikipedia.org/wiki/Haus_des_Nikolaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:10 Uhr.
Seite 4 von 5   « Erste     234 5      

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