# Quadrat aus Sternen mit while-Schleife



## SirWitan (9. Mrz 2011)

Ich habe mich länger mit dieser Aufgabe beschäftigt, aber ich komme einfach auf keine Lösung ;(

Zur Aufgabe: Implementieren Sie eine Prozedur, die eine
Zahl interaktiv entgegennimmt und einen
entsprechend großen quadratischen Rahmen
aus dem Symbol „*“ erzeugt. (Mit while-Schleife)

Ich habe noch nicht Mal einen wirklichen Ansatz, wie diese Aufgabe gehen soll, jedoch habe ich eine ähnliche Aufgabe, die ich zuvor bearbeitet habe: (Aufgabe: Mithilfe der Prozedur soll ein halber Tannenbaum auf der Konsole ausggeben werden [aus dem Symbol "*"]

```
import java.util.Scanner;

public class Aufgabe {

  public static void main(String[] args) {


  }

public static void tanne(){
    System.out.println();
    Scanner m = new Scanner(System.in);
    System.out.println("In welcher Größe soll der halbe Tannenbaum aus Sternen erstellt werden?");
    int n = m.nextInt();
    System.out.println();
    System.out.println("Hier die Lösung: ");
    System.out.println();
    int y = m.nextInt();
    String x ="*";
    int z = 1;
    while(z<=y){
      System.out.println(x);
      x=x+"*";
      z++;
    }
  }
```


Ich denke jedoch das hier 2 while-Schleifen notwendig werden, jedoch hab ich keinen Plan wie ich vorgehen soll und wäre für jede Hilfe dankbar!


----------



## bone2 (9. Mrz 2011)

-du brauchst soviele zeilen wie das quadrat groß werden soll
-zeile 1 und zeile n werden n * lang
-zeile 2 bis n-1 bestehen aus *; n-2 leerzeichen und *

also eine äußere zeilenschleife
eine innere abfrage (if zeile = 1 oder zeile = n)
dann zwei verschiedene innere schleifen, die eben eine durchgezogene oder mittlere linie bauen


----------



## SirWitan (9. Mrz 2011)

Der Benutzer soll ja in die Konsole eine Zahl eintippen können, mithilfe von der dann das Quadrat entsteht. (Also keine konstante Variable, sondern eine frei Auswählbare, anhand von der dann das Quadrat entsteht)

Könntest du mir das nochmal anhand eines Java Codes erklären? So ist es etwas missverständlich für mich...


----------



## SirWitan (9. Mrz 2011)

Hat jemand noch eine Möglichkeit die ich als Laie vielleicht besser verstehen kann?


----------



## akimoon (10. Mrz 2011)

Pseudo-Code:
x ist die eingegebene (als parameter übergebene zahl)
Am besten erstellst du hierzu eine Methode "zeichenQuadrat(int x)", die einen int-Wert erwartet..
x ist jetzt allerdings nicht gerade ein aussagekräftiger Name..
Kannst ja erstmal versuchen, ob es mit einem konstanten Wert klappt, und dann die Eingabe einbauen? 


```
Eingegebene Zahl (x): 10
rufe zeichenQuadrat(x) auf

zeichneQuadrat(int x) macht:
  zeile=1
  solange zeile<=x
    wenn (zeile== 1 oder zeile == x)
      schreibe x mal "*"
    ansonsten
      schreibe "*"
      schreibe x-2 mal "leerzeichen"
      schreibe "*"
    springe in die nächste Zeile
    erhöhe zeile um eins
```


----------



## Andi_CH (10. Mrz 2011)

SirWitan hat gesagt.:


> Könntest du mir das nochmal anhand eines Java Codes erklären? So ist es etwas missverständlich für mich...



Guck mal hier :noe:


----------



## SirWitan (10. Mrz 2011)

@akimoon: Danke für die Lösung , jedoch konnte ich es mir nach 4 Stunden am Rechner auch mühsam selbst erklären!

@Andi_CH: Nein, zu den Leute zähle ich bestimmt nicht. Ich wollte nur rechtzeitig (war leider zu spät) nach Hilfe suchen um zumindest noch etwas abzugeben. Ich hoffe doch das ist erlaubt. Betteln werde ich bestimmt nicht, sowas ist einfach unwürdig... geschweige denn etwas anderes tun...  

Es gab sogar eine Zeit wo ich in Informatik sogar recht gut war... jedoch sehe ich langsam das das ganze doch nicht meins ist... Ich sitze wöchentlich um die 7 Stunden am Rechner um die Aufgaben zu lösen aber es ist einfach zu kompliziert für mich geworden...


----------



## Andi_CH (11. Mrz 2011)

SirWitan hat gesagt.:


> @Andi_CH: Nein, zu den Leute zähle ich bestimmt nicht. Ich wollte nur rechtzeitig (war leider zu spät) nach Hilfe suchen um zumindest noch etwas abzugeben.
> 
> Es gab sogar eine Zeit wo ich in Informatik sogar recht gut war... jedoch sehe ich langsam das das ganze doch nicht meins ist... Ich sitze wöchentlich um die 7 Stunden am Rechner um die Aufgaben zu lösen aber es ist einfach zu kompliziert für mich geworden...



Wer so direkt nach Java Code fragt - na ja

Informatikaufgaben lösen beginnt eben genau NICHT am Rechner (Ich fühle mich mal wieder als Don Quijote oder Prophet im eigenen Lande oder wie ein Lehrer vor einer Informatikerklasse)


----------



## SirWitan (11. Mrz 2011)

Naja ich erstelle sonst immer ein Struktogramm aber mir hilft das auch nicht viel weiter...


----------



## Andi_CH (14. Mrz 2011)

Dann erstell mal eines - es hilft!


----------

