Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

Raute in Java ausgeben

hallo,
ich habe folgendes problem. ein programm soll mit hilfe von schleifen eine einfache gefüllte raute, bestehend aus irgendwelchen zeichen, ausgeben.
beispiel:
     *
    ***
   *****
  *******
   *****
    ***
     *

die obere hälfte schaffe ich grad so - also ein dreieck aber den rest bekomm ich einfach nicht hin. bin auch bloß ein absoluter anfänger^^

ich hoffe jmd kann helfen :)


Antworten zu Raute in Java ausgeben:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
2 Leser haben sich bedankt

Dann poste doch mal das, was du schon hast, vielleicht muss man da gar nicht mehr so viel ändern.

erstmal danke für die antwort :)

          int hoehe = 4;
int laenge = hoehe * 2 - 1;

for (int i = 0; i < (hoehe + 1); i++) {
  for (int j = 0 ; j < laenge; j++) {
    if ( (j > (laenge / 2) - i) && (j < (laenge / 2) + i) ) {
        System.out.print("*");
    } else {
         System.out.print(" ");
    }
  }
  System.out.println();
}
}
     
int hoehe = 8;
int grenze = hoehe /2 +1;
int laenge = hoehe * 2 - 1;

for (int i = 0; i < grenze; i++) {
for (int j = 0 ; j < laenge; j++) {
if ( (j > (laenge/2) - i) && (j < (laenge/2) + i) ) {
cout << "*";
    } else {
         cout << " ";
    }
}
cout << "\r\n";
}
for (int i = hoehe - grenze+1; i > 0 ; i--) {
for (int j = laenge; j > 0 ; j--) {
if ( (j > (hoehe-1 / 2) - i) && (j < (hoehe-1 / 2) + i) ) {
cout << "*";
    } else {
         cout << " ";
    }
}
cout << "\r\n";
}

Die couts durch dein "System.out.print()" ersetzen
bzw die cout << "\r\n"; durch "System.out.println()" ;)

hatte grad keinen Java Compiler hier und wollt sicher gehn, dass es läuft.

Der trick? wir lassen das ganze ding einfach umgekehrt laufen und vermeiden durch berücksichtigung der Grenze die doppelte Darstellung der mittleren reihe.

Ja sch...e ausgedrückt, aber ich bin nich ganz bei der Sache.

Gruß Dave

vielen dank!

mit dem umgekehrt laufen lassen hatte ich mir auch überlegt, aber einfach nix gescheites hinbekommen^^

werde das nachher gleich mal testen. auf jeden fall danke :)

funktioniert gut :)

ich habe aber mal die '+ 1' bzw '- 1' bei int grenze bzw hoehe entfernt - klappt trotzdem. oder is das nur zufall und in anderen fällen klappts dann nicht mehr??

öhm.. probiers aus, ich hab die einfach ungeprüft von dir so übernommen :)
Sollte aber trotzdem funktionieren, wichtig ist eig. nur dass sich die grenze im ablauf nicht verschiebt :)

Ka habs nich genauer angeschaut nur kurz erweitert :) 

achso, allet klar. hab' nämlich grad bissl mit "rum gespielt" und dabei is it mir aufgefallen^^ dann werd ich's einfach mal ohne lassen

nochmals danke :)

und wie geht das ganze in delphi? als konsolenanwendung?
bisher habe ich:

begin
  try
  Writeln('Welches Zeichen?');
  Readln(s);
  Writeln('Zeilen?');
  Readln(n);
  x := (n div 2);
  for i := 1 to x do
  begin
    zeile  := '';
    sterne := '';
    leer   := '';
    for j := 1 to ((i*2)-1) do
      sterne := sterne + s;
    for j := 1 to (40-i) do
      leer   := leer + ' ';
    zeile := leer + sterne;
    Writeln(zeile);
  end;
  for l := x+1 to n do



muss ich das nun auch einfach umkehren?wenn ja wie

es gibt auch "downto" statt "to" in der forschleife ;)
Hoff das löst dein Problem. 


« DTA-FormatNeue programmiersprache lernen »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Quellcode
Ein Quellcode, auch als Quelltext bekannt, bezeichnet den unkompilierten Programm-Code einer Software. Quell- oder Programm-Code ist der auch für Menschen lesbare Co...

Unicode
Unicode ist ein international anerkannter Standard, der als universeller Zeichencode ("Universal Code") dient und durch das Unicode-Konsortium entwickelt und verwaltet wi...

QR-Code
QR-Codes, die Abkürzung für "Quick Response Codes", sind eine Form von zweidimensionalen Barcodes. Damit lassen sich Informationen schnell und effizient speiche...