AGB  ·  Datenschutz  ·  Impressum  







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

Das Haus vom Nikolaus Konsolenanwendung

Ein Thema von hotkey · begonnen am 20. Aug 2011 · letzter Beitrag vom 3. Sep 2011
 
Benutzerbild von himitsu
himitsu

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

AW: Das Haus vom Nikolaus Konsolenanwendung

  Alt 21. Aug 2011, 08:08
Wer hat alles in Mathematik aufgepasst?

Gegeben ist ein Koordinatensystem, bzw. eine gezackte Gerade.
und gegeben sind 8 Geraden, bzw. 6 Geraden mit Überlauf.

Liegt nun ein Pinkt des Koordinatensystems auf einer der Linien?
Wenn ja, dann zeichne dort ein X.



Zwei Schleifen im Koordinatensystem:
Delphi-Quellcode:
// ___1___
// __a_b__
// _a___b_
// 2ccccc3
// fd___eg
// f_d_e_g
// f__x__g
// f_e_d_g
// fe___dg
// 4hhhhh5

var
  x, y: Integer;
begin
  for y := 0 to 42 do begin
    for x := 0 to 28 do
      if (y + 14 = x) {b: diagonal}
          or (y + 14 = 28 - x]) {a: diagonal}
          or (y + 42 = x) {d: diagonal}
          or (y + 42 = 28 - x) {e: diagonal}
          or ((y > 13) and (x = 0)) {f: senkrecht}
          or ((y > 13) and (x = 28)) {g: senkrecht}
          or (y = 14) {c: quer}
          or (y = 42) {h: quer} then
        Write('X')
      else
        Write(' '); // Write('_'); für Debugmodus
    WriteLn;
  end;
  ReadLn;
end.
Zwei Schleifen im Koordinatensystem (die Berechnung 'nen bissl optimiert/zusammengefaßt):
Delphi-Quellcode:
var
  x, y: Integer;
begin
  for y := 0 to 42 do begin
    for x := 0 to 28 do
      if (((y + 14) mod 28) in [x, 28 - x]) {diagonal}
          or ((y > 13) and (x in [0, 28])) {senkrecht}
          or (y in [14, 42]) {quer} then
        Write('X')
      else
        Write(' '); // Write('_'); für Debugmodus
    WriteLn;
  end;
  ReadLn;
end.
Eine Schleife mit Koordinatensystem:
Delphi-Quellcode:
var
  x, y: Integer;
begin
  x := 0;
  y := 0;
  while y < 43 do begin
    if (((y + 14) mod 28) in [x, 28 - x]) {diagonal}
        or ((y > 13) and (x in [0, 28])) {senkrecht}
        or (y in [14, 42]) {quer} then
      Write('X')
    else
      Write(' '); // Write('_'); für Debugmodus
    Inc(x);
    if x > 28 then begin
      WriteLn;
      x := 0;
      Inc(y);
    end;
  end;
  ReadLn;
end.
Eine Schleife auf 'ner Geraden.
Delphi-Quellcode:
var
  i: Integer;
begin
  for i := 0 to 1246 do begin
    if (((i div 29 + 14) mod 28) in [i mod 29, 28 - i mod 29]) {diagonal}
        or ((i > 407) and (i mod 29 in [0, 28])) {senkrecht}
        or (i div 29 in [14, 42]) {quer} then
      Write('X')
    else
      Write(' '); // Write('_'); für Debugmodus
    if i mod 29 = 28 then
      WriteLn;
  end;
  ReadLn;
end.


PS: Wer die Linien alle einzeln berechnen/einfügen möchte, der nehme eine StringListe oder ein String-Array, zum Zwischenspeichern.
Fülle erstmal alle Zeilen mit Leerzeichen und tauschen dann, Stück für Stück, die einelnen Punkte/Chars aus, bevor alles ausgegeben wird.

Hier hat man also ein Koordinatensystem / eine Fläche in den Strings.
Gehe nun nur noch die bekannten Geraden durch und zeichne deren Punkte ein.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (21. Aug 2011 um 08:45 Uhr)
  Mit Zitat antworten Zitat
 


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 06:04 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