Dreieck mit Sternchen

Hi

Wir haben in der Schule erst seit 1 Monat Informatik und jetzt haben wir ne Hausaufgabe bekommen:
Wir sollen ein Programm schreiben, dass wenn man die Breite des Dreiecks eingibt, es in Sternchen ausgegeben wird. z.B. so :

Bei eingabe von 7, sollte es wohl so aussehen: ( Die Punkte sollen normale Leerstellen sein, denn ich wusste nicht wie ich es hier sonst darstellen soll)
…*
…***
.*****
*******
Vorher hatten wir schon mal aufbekommen das selbe mit einem hohlen quadrat , und mit einem halben dreieck zu machen. Das war ja auch relativ einfach. Aber hier beisse ich mir die Zähne aus :wink:

So nen richtigen Plan habe ich nämlich noch nicht.
Ich glaube man braucht nen neuen Befehl dafür, den wir noch nicht hatten, denn unser komischer Lehrer sagte grinsent: " Das ist für die „Guten“ unter euch…" :smiley:
Naja, wäre nett wenn ihr mir erklären könntet wie das geht. :smile:

tschau

  1. Prüfen ob Zahl ungerade ist, ansonsten maulen, dass man damit kein vernünftiges Dreieck in Zeichengrafik hinbekommt.
  2. Schleife i von 1 bis Eingabewert mit Step 2 basteln.
  3. Schleife n von 1 bis (Eingabewert-i)/2. In der Schleife darfst Du dann die Leerzeichen ausgeben (ich weiß ja nicht, ob Ihr schon mit Strings und Stringfunktionen gearbeitet habt, wenn ja, dann halt diese nehmen, dann brauchst Du auch keine Schleife, sondern die Funktion, der Wert halt dann auch Integer((Eingabewert-i)/2)).
    Pflubb schon haben wir die Leerzeichen.
  4. Ausgabe der „*“ entweder auch mit einer Schleife n von 1 bis i oder mit einer Stringfunktion (Anzahl der „*“ = i).
    Pflubb schon sehen wir Sternchen.

Nun schreibe ich es nochmal in Steno:

1. Prüfen, ob Eingabe ungerade
2. Schleife i mit Step 2
3. Ausgabe Leerzeichen Anzahl/Länge = (Eingabe-Schleife i)/2
4. Ausgabe Asterisk Anzahl/Länge = Schleife i
5. Ende Schleife i

Hoffe Dich nicht zu sehr verwirrt zu haben.

Gruß
Christian

Hmm, was ist denn „Step 2“ ??
Und das " (Eingabewert-i)/2 " rallt der bei mir nit. da kommt dann type mismatch.

Hmm, was ist denn „Step 2“ ??

step 2 in ein einer Schleife bedeutet, dass die Schrittweite auf 2 erhöht wird (gibt es aber wohl in Delphi und Pascal nicht), daher

i:=1;
repeat
 Canvas.TextOut( ... );
 i:=i+2
until
 i\>eingabe;

Und das " (Eingabewert-i)/2 " rallt der bei mir nit. da kommt dann type mismatch.

(eingabe-i) DIV 2;

ich geb dir mal ein pascalprogramm:

program sternchendreieck;

uses crt;

var lv,lv1,lv2,breite,b2 : shortint; (* lv als laufvariable, breite ist die benutzereingabe *)

begin
write(‚Breite des Dreiecks:‘)
repeat readln(breite); until ((breite+1) mod 2)=0
b2:=(breite+1)/2
for lv:=1 to b2 do begin (* die einzelnen Reihen *)
for lv1:=1 to (b2-lv) do (* leerzeichen *)
write(’ ‚);
for lv2:=1 to (lv*2-1) do
write(‘*’); (* sternchen *)
end; (* for1 *)
repeat until readkey 0;
end.

So, ich bin auch nur ein Anfaeger, habs auch nicht ausprobiert,
versuchs einfach mal, vielleicht klappts ja.
Und bestimmt gehts auch einfacher!

Gruss Roman

program sternchendreieck;

uses crt;

var lv,lv1,lv2,breite,b2 : shortint; (* lv als laufvariable,
breite ist die benutzereingabe *)

begin
write(‚Breite des Dreiecks:‘)
repeat readln(breite); until ((breite+1) mod 2)=0
b2:=(breite+1)/2
for lv:=1 to b2 do begin (* die einzelnen Reihen *)
for lv1:=1 to (b2-lv) do (* leerzeichen *)
write(’ ‚);
for lv2:=1 to (lv*2-1) do
write(‘*’); (* sternchen *)
writeln; (* hatte ich vergessen *)
end; (* for1 *)
repeat until readkey 0;
end.