Benutzer-Werkzeuge

Webseiten-Werkzeuge


klassen1:eigene:aufgaben:aufgabe3:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.


klassen1:eigene:aufgaben:aufgabe3:start [2024/08/31 10:03] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 +===== Lösung zu Aufgabe 3: Zeichne ein X in Ascii-Art =====
 +{{ :klassen1:eigene:pasted:20201108-203142.png}}
 +Erweitere die Klasse ''AsciiArt'' von oben um eine Methode ''void zeichneX(int breite, int linienstärke, String farbe)'', die ein großes X aus lauter X-Zeichen zusammensetzt. Die Ausgabe von ''art.zeichneX(10, 2, Color.pink);'' sieht beispielsweise so aus, wie im Bild rechts zu sehen.
 +
 +
 +<HTML>
 +
 +<div class="java-online" style="height: 600px; width: 100%" data-java-online="{'withBottomPanel': false, 'id': 'AsciiArtLoesung'}">
 +
 +<script type="text/plain" title="AsciiArt.java">
 +AsciiArt art = new AsciiArt();
 +
 +// 10 Zeichen breites X mit Linienstärke 2 Zeichen
 +art.zeichneX(10, 2, Color.pink);
 +
 +class AsciiArt {
 +
 +   void zeichneX(int breite, int linienstärke, String farbe) {
 +      int von1 = 1;
 +      int bis1 = von1 + linienstärke - 1;
 +      int bis2 = breite;
 +      int von2 = breite - linienstärke + 1;
 +
 +      while(von1 <= breite - linienstärke + 1) {
 +         
 +         for(int spalte = 1; spalte <= breite; spalte++) {
 +            
 +            if(spalte >= von1 && spalte <= bis1 || spalte >= von2 && spalte <= bis2) {
 +               print("x", farbe);
 +            } else {
 +               print(" ");
 +            }
 +         }
 +
 +         von1++;
 +         bis1++;
 +         von2--;
 +         bis2--;
 +         println();
 +
 +      }
 +   }
 +}
 +</script>
 +</div>
 +
 +</HTML>
 +
 +==== Erklärung ====
 +{{ :klassen1:eigene:aufgaben:aufgabe3:pasted:20201108-204449.png}}
 +Es gibt verschiedene (gleich gute!) Möglichkeiten, diese Aufgabe zu lösen. Die vorliegende definiert zwei Variablen ''von1'' und ''bis1'', die festlegen, von welcher Spalte bis zu welcher Spalte die "X"-Zeichen des "Linksobennachrechtsunten"-Querbalkens in der aktuellen Zeile geschrieben werden und ''von2'' sowie ''bis2'' entsprechend für den "Rechtsobennachlinksunten"-Querbalken. In der Zeichnung rechts ist die anfängliche Belegung der Variablen für ein X mit Breite 20 und Linienstärke 3 zu sehen:
 +$$von1 = 1$$
 +$$bis1 = 1 + 3 - 1 = 3$$
 +$$von2 = 20 - 3 + 1 = 18$$
 +$$bis2 = 20$$
 +Für jede Zeile durchläuft die Variable ''spalte'' die Werte von 1 bis 20 und für jeden Wert von ''spalte'' wird ein X ausgegeben oder ein Leerzeichen. Dabei wird folgende Regel angewandt: \\ \\ 
 +<code>
 +Falls (spalte >= von1 und spalte <= bis2) ODER (spalte >= von2 und spalte <= bis2) wird ein X ausgegeben, ansonsten ein Leerzeichen.
 +</code>
 +Die X werden also - einfach gesagt - für die Spaltenbereichen von ''von1'' bis ''bis1'' und von ''von2'' bis ''bis2'' ausgegeben. \\ \\ 
 +Nach Beendigung jeder Zeile werden ''von1'' und ''bis1'' um 1 erhöht (der "Linksobennachrechtsunten"-Querbalken wandert also ein Zeichen nach rechts) und ''von2'' und ''bis2'' um 1 erniedrigt (der "Rechtsobennachlinksunten"-Querbalken wandert also ein Zeichen nach links).
 +
 +
  
klassen1/eigene/aufgaben/aufgabe3/start.txt · Zuletzt geändert: 2024/08/31 10:03 von 127.0.0.1