Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Kreuzmuster Einfach aber ich kriegs nicht hin
ReggaeGregi - Di 20.03.07 21:28
Titel: Kreuzmuster Einfach aber ich kriegs nicht hin
Hi Leute,
könnt ihr mir bitte helfen. Ich will als Übung ein Kreuzmuster erstellen. Dieses Krieg ich bereits hin
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| XXXXX XXXX XXX XX X |
Aber andere Muster sollten eingentlich einfach sein aber ich bin noch nicht drauf gekommen. Vileicht könnt Ihr mir helfen. Ich würde gerne folgendes Muster hinkriegen:
Delphi-Quelltext
1: 2: 3: 4: 5:
| XXXXX XXXXX XXXXX XXXXX |
und das woll das schwierigste
Delphi-Quelltext
1: 2: 3: 4: 5:
| X X X X X X X X X X |
VIELEN DANK FÜR EURE HILFE ;)
Narses - Di 20.03.07 21:32
Moin und :welcome: im Forum!
Zeig doch mal deinen bisherigen Code, dann können wir dir auch besser helfen; wenn du dann noch eine etwas genauere Beschreibung deiner "Problemstelle" gibst, sollten wir schon weiter kommen! ;)
cu
Narses
ReggaeGregi - Di 20.03.07 23:58
also soweit bin ich gekommen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| var i,spalte:integer; x,j:string; begin
For i:=1 to 4 Do begin j:=j+' '; For spalte:=1 to i Do begin j:=j+'X'; Memo1.Lines.Add(j); end; end;
end; |
aber mit diesem System krieg ich nciht die anderen hin. Also bitte helft mit dringend. Danke
Narses - Mi 21.03.07 00:06
Moin!
OK, erster Schritt, wie muss denn der Code geändert werden, um das Dreieck, was du damit erstellst, auf den Kopf zu stellen? ;)
cu
Narses
ReggaeGregi - Mi 21.03.07 00:10
na eigentlich einfach anstellen von 1 to 4 wird 4 to 1 aber ich brauch ja die anderen Muster
Narses - Mi 21.03.07 00:15
Moin!
Gut, dann schau dir mal das hier an: ;)
Quelltext
1: 2: 3: 4:
| XXXXX oXXXXX ooXXXXX oooXXXXX |
Was fällt dir auf?
cu
Narses
ReggaeGregi - Mi 21.03.07 00:34
Ich verstehe schon. Aber ich weiss nicht wie ich das genau in meinem Quelltext einbauen kann. Oder ich hab ein fehler drin. weil bei mir kommt das hier raus :
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| o Xo X o Xo XX o Xo XXo X o Xo XXo XX o Xo XXo XXX o Xo XXo XXXo X o Xo XXo XXXo XX o Xo XXo XXXo XXX o Xo XXo XXXo XXXX |
Narses - Mi 21.03.07 00:36
Moin!
Du solltest erstmal deinen Code dazu bringen, überhaupt nur ein Dreieck zu erzeugen, ohne diese Spalten (oder ist das Teil der Aufgabe?). ;) Also sowas hier:
Poste doch mal deinen Code, der genau dieses Dreieck erzeugt.
cu
Narses
Narses - Mi 21.03.07 01:04
Moin!
Hm, einen kleinen Anschubser geb ich dir mal noch, das wäre der Code für das Dreieck:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| var i,j: Integer; Zeile: String; begin Memo1.Clear; for i := 1 to 4 do begin Zeile := ''; for j := 1 to i do Zeile := Zeile +'X'; Memo1.Lines.Add(Zeile); end; end; |
Gedanklicher Ansatz für das Parallelogramm: Es ist ja immer eine
feste Anzahl Xe und die Anzahl der
Leerzeichen davor ist "dreieckig"... ;)
cu
Narses
//EDIT: Variablenname ausgetauscht: aus 'x' -> 'Zeile' gemacht, passt besser und ist dann mit deinem Code stimmig ;)
ReggaeGregi - Mi 21.03.07 08:19
jo danke ich hatte einen kleinen Fehler irgendwo drinne. Aber auf diesem Rechner habe ich den richtigen Quelltext
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| var i,j,d:integer; zeile,x:string; begin For i:=1 to 4 do begin Zeile:=' '; For j:=4 to i Do Zeile:=Zeile+'x'; memo1.lines.add(zeile) end; end; |
Aber sorry ich kriegs immer noch nicht. Ich schaff nicht mal wirklich überhaupt ein R echteck
Geschweige es versetzt anzusetzten. Das muss man doch mit einer weiteren Variable arbeiten oder?
Mfg
ReggaeGregi
Narses - Mi 21.03.07 10:32
Moin!
ReggaeGregi hat folgendes geschrieben: |
| Aber sorry ich kriegs immer noch nicht. Ich schaff nicht mal wirklich überhaupt ein Rechteck |
Ein Rechteck ist doch noch einfacher, als ein Dreieck: ;)
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| var i: Integer; begin for i := 1 to 4 do Memo1.Lines.Add('XXXXX'); end; |
ReggaeGregi hat folgendes geschrieben: |
| Geschweige es versetzt anzusetzten. |
Jetzt brauchst du doch das Ganze nur noch zu kombinieren, sprich ein Leerzeichen-Dreieck davor zu setzen. ;)
cu
Narses
freak4fun - Mi 21.03.07 10:36
Mal so als Idee:
Delphi-Quelltext
1:
| function LeftSpaces(const ACount: Integer; const AChr: String = ' '): String; |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm1.Button1Click(Sender: TObject); var i: Integer; begin Memo1.Clear; for i := 1 to 4 do Memo1.Lines.Add(LeftSpaces(i - 2, ' ') + 'xxxx'); end;
function TForm1.LeftSpaces(const ACount: Integer; const AChr: String = ' '): String; var i: Integer; begin Result := ''; for i := 0 to ACount do Result := Result + AChr; end; |
Der Sinn hat sich mir aber noch nicht erschlossen. :rofl:
MfG
freak
oldmax - Mi 21.03.07 10:55
Hi
Also, Narses hat dir ja nun ein lauffähiges Beispiel gegeben und wenn das bei dir nicht funktioniert, dann sind Fehler von deiner Seite drin. Aber nun, warum ich mich dazu melde, du mußt dich davon lösen, das ein PC ein kompliziertes Teil ist und eine Programmiersprache noch viieeel komplizierter.
nehmen wir mal den Code vo Narses und gehen Schritt für Schritt durch, denn genau das tust du, wenn du es mit der Hand auf ein Blatt Papier malst . 1. Reihe 1 Kreuz
2. Reihe 2 Kreuze, dritte Reihe 3 Kreuze usw. So entsteht dein Kreuzmuster "Dreieck".
Sieht ein bischen komisch aus, du wolltest doch
Delphi-Quelltext
1: 2: 3: 4:
| x xxx xxxxx xxxxxxx |
also beginnen wir mit der ersten Reihe. Du hast eine Vorstellung, wieviele Zeilen du schreiben willst und daher beginnst du genau mit der Anzahl an Leerzeichen (Spacetaste) wie du Zeilen hast-1.
nun zählst du einmal die Kreuze in den Zeilen und stellst fest, die Anzahl verhält sich wie ZeilenZahl*2-1
also Zeile 1= 1*2-1=1
Zeile 2= 2*2-1=3
Zeile 3= 3*2-1=5
Zeile 4= 4*2-1=7
usw.
Wenn dir diese Schritte und Zusammenhänge klar sind, dann wirst du auch entsprechende Programmierung hinbekommen.
In diesem Fall sieht's dann so aus:
angenommen 4 zeilen
Also
vereinbare erst mal ein paar einfache Variable
Delphi-Quelltext
1: 2: 3:
| Zeilen : Integer; AnzLeer : Integer; Anzeige : String; |
Setze im Programm die Zeilenzahl
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| For i:=1 to Zeilen do begin Anzeige:=''; For J=1 to Zeile-1 do Anzeige:=Anzeige+' '; For j:=1 to i*2-1 do Anzeige:=Anzeige+'X'; Memo1.Lines.Add(x); end; |
Diesen Code kannst du auch mal mit einer anderen Zeilenzahl ausprobieren. Nun zu deinen anderen Wünschen. Die Vorgehensweise ist analog. Erst überlegen, wie sehen die Schritte aus und wie muß ich Programmieren, um diese Schritte mit einem Programm abzubilden.
Viel Spaß
ReggaeGregi - Sa 24.03.07 11:29
Jo Vielen Dank. Leute. Ich hab alles hingekriegt. Das ist super.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!