![]() |
AW: Das Haus vom Nikolaus Konsolenanwendung
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:
Zwei Schleifen im Koordinatensystem (die Berechnung 'nen bissl optimiert/zusammengefaßt):
// ___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.
Delphi-Quellcode:
Eine Schleife mit Koordinatensystem:
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.
Delphi-Quellcode:
Eine Schleife auf 'ner Geraden.
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.
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. |
AW: Das Haus vom Nikolaus Konsolenanwendung
Naja , das mit der Diagonale.. Das wird uns unser Lehrer noch erklären , ich bin jetzt soweit , dass das so aussieht :
x x x x x x x x x x x x x x x x Jetzt fehlt nur noch die parallele zur der Senkrechten und dann noch die Parallele zu der Horizontalen.. |
AW: Das Haus vom Nikolaus Konsolenanwendung
Die Horizontalen ist natürlich ganz leicht ... genauso wie die Vorhandene, einfach in einer "anderen" Zeile. :wink:
Und die Senkrechte ... ein paar Leerzeichen hinter der Vorhandenen und dann die Neue anhängen. |
AW: Das Haus vom Nikolaus Konsolenanwendung
... nur wie kommst du in der Konsole eine Zeile zurück ? Imho gar nicht. Da liegt der Hase im Pfeffer. 8-)
|
AW: Das Haus vom Nikolaus Konsolenanwendung
Danke für die Tipps. Ich versuch mal die Tipps umzusetzen..
|
AW: Das Haus vom Nikolaus Konsolenanwendung
Zitat:
Allerdings frage ich mich, was der Lehrer mit der Aufgabe überhaupt bezweckt. Was soll das Lernziel sein? Also um Schleifen zu üben, gibt es bessere Programme. |
AW: Das Haus vom Nikolaus Konsolenanwendung
Ist bei der Aufgabe nicht generell die Vorgabe, ein haus zu zeichnen, ohne den "Zeichenstift" abzusetzen?
Wenn das so ist, ist die von mir im vorherigen Post genannte Lösung, ein simples String-Array auszuwerfen, ja theoretisch für ein CMD-Programm die einzig richtige, da das die einzige Lösung ist, bei der in der Konsole nicht neu positioniert werden muss und der "Zeichenstift" Zeile für Zeile durchgeht, ohne eine noch einmal zu durchwandern :-D :-D (mal vom Zeilensprung von Writeln abgesehen, aber der lässt sich ja eh nicht vermeiden...) Ich hab hier auch eine Unit rumliegen, mit der ich immer in der Konsole positioniere...die müsste ich allerdings mal von den Abhängigkeiten meiner Libs freischaufeln... |
AW: Das Haus vom Nikolaus Konsolenanwendung
[OT]
Zitat:
[/OT] |
AW: Das Haus vom Nikolaus Konsolenanwendung
Das würde wohl auch die ganzen read bzw. readln erklären, wenn nach jedem 'x' oder jedem "Strich" des Hauses eine Pause gemacht wird, damit man die Entwicklung sieht.
|
AW: Das Haus vom Nikolaus Konsolenanwendung
Zitat:
Aber das ReadLn am Schluß ist schon wichtig, wenn man das Programm micht über eine Konsole startet. Also z.B. aus Delphi heraus oder über den Explorer. Denn dort nimmt das Programm ja "seine" selbsterstellte Konsole mit und man sieht (fast) nix, ohne Debugger. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:34 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