Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Schulaufgaben (https://www.delphipraxis.net/154192-delphi-schulaufgaben.html)

ridom 31. Aug 2010 16:36

Delphi Schulaufgaben
 
Hallo Leute hoffe erstmal das ich in der richtigen Kategorie bin

Ich habe Delphi in der Schule und folgendes Problem als Aufgabe haben wir :


Versuchen Sie mit Hilfe einer geschachtelten For Anweisung ein Tannenbaum auf den Bildschirm zu Zeichen die aus vielen
gleichen frei wählbaren Zeichen besteht

Als Rechteck bekommen ich das ganze hin aber als Baum keine ahnung kann mir jmd helfen

soll also so aussehen:

------x
-----xxx
----xxxxx
---xxxxxxx
------x

mkinzler 31. Aug 2010 16:38

AW: Delphi Schulaufgaben
 
Ist so ähnlich wie ein Rechteck, nur das die innere Schleife 3 mit variablen Grenzen sind

Prototypjack 31. Aug 2010 16:39

AW: Delphi Schulaufgaben
 
Moin,

Soweit ich das sehe, sind es pro Zeile 2 Zeichen mehr. Das heißt, du zählst bei der inneren Schleife, bis auf das letzte mal, immer bis zum Index der äußeren Schleife + 2.

Hilft dir das schon?

Edit: Das ist so gesehen jetzt natürlich nicht mehr ganz so sinnvoll / richtig, da der Baum jetzt anders aussieht ;) Ist aber trotzdem kein Problem, da die Leerräume pro Zeile um 1 wachsen -> Schleife-Grenze ;)

Grüße,
Max

ridom 31. Aug 2010 16:57

AW: Delphi Schulaufgaben
 
ehm iwie weiss ich grad nicht was du meinst so sieht mein Rechteck aus


Code:
procedure TForm2.Button2Click(Sender: TObject);
var i,j: integer;
    ergebniss, zeichen: string[100];
begin
  zeichen:= edit1.text;
  for i:= 0 to 6 do
    begin
      ergebniss:=' ';
        for j:= 0 to 12  do
          begin
            ergebniss:= ergebniss + zeichen;
          end;
      memo1.Lines.Add(ergebniss);
    end;
end;

mkinzler 31. Aug 2010 17:01

AW: Delphi Schulaufgaben
 
Wie gesagt, musst du die innere anpassen
-Leerzeichen (weniger werdend)
-Xe (mehr werdend)

Namenloser 31. Aug 2010 17:17

AW: Delphi Schulaufgaben
 
Tipp: Du kannst als Start- und Endwerte von Schleifen auch Variablen angeben. Also z.B:
Delphi-Quellcode:
for i := variable_x to variable_y do ...

ridom 31. Aug 2010 17:19

AW: Delphi Schulaufgaben
 
:wall: checks grad ehrlich gesagt nicht

mkinzler 31. Aug 2010 17:24

AW: Delphi Schulaufgaben
 
Code:
   
   x
  xxx
 xxxxx
xxxxxxx
   x
   x
3 leer; 1 x
2 leer; 3 x
1 leer; 5 x
0 leer; 7 x
...

XHelp 31. Aug 2010 17:36

AW: Delphi Schulaufgaben
 
Vllt ist es sich so einfacher vorzustellen:
Wenn die Baumkrone 4 Zeilen hoch sein muss, dann ist die längste Zeile 2*(4-1) + 1=7 Zeichen lang.
1 Zeile: 3 leer, 1 x, 3 leer
2 Zeile: 2 leer, 3 x, 2 leer
3 Zeile: 1 leer, 5 x, 1 leer
4 Zeile: 0 leer, 7 x, 0 leer
Leerzeichen immer -1 und x immer +2

ridom 31. Aug 2010 17:43

AW: Delphi Schulaufgaben
 
Ja aber wie mache ich das den so wie ich es versuche funktioniert es definitiv nicht stehe aber auch ehrlich gesagt immoment voll aufem schlauch
da ich schon seit mehreen stunden darüber nachdenke

Code:
  for i:= 0 to 7 do
    begin
      ergebniss:='      ';
      ergebniss:= ergebniss - ergebniss ;
:pale: glaube das ist immoment völlig falsch was ich versuche da ich immer noch ein rechteck habe und nichtmal annähernd einen Baum

mkinzler 31. Aug 2010 17:46

AW: Delphi Schulaufgaben
 
Verwende 2 innere Schleifen
Delphi-Quellcode:
Äussere Schleife
    Innere Schleife Leerzeichen
       Ausgabe Leerzeichen
    Innere Schleife Ende
    Innere Schleife x
       Ausgabe x
    Innere Schleife Ende
Äussere Schleife Ende

himitsu 31. Aug 2010 17:48

AW: Delphi Schulaufgaben
 
Tipp: Entweder über Delphi-Referenz durchsuchenCopy oder Delphi-Referenz durchsuchenDelete die Leerzeichen je durchgang entfernen und über + die 'xx' hinzufügen

oder Delphi-Referenz durchsuchenDupeString und etwas Mathematik

[edit]
OK, oder über zusätzliche Schleifen das machen, was DupeString für einen machen würde, ala mkinzlers Vorschlag :stupid:

Namenloser 31. Aug 2010 17:51

AW: Delphi Schulaufgaben
 
Was willst du mit
Delphi-Quellcode:
ergebniss:= ergebniss - ergebniss ;
bezwecken? Überlge dir, ob der Code, den du schreibst, Sinn macht.

(Nebenbei, "Ergebnis" schreibt sich mit einem s am Ende - auch wenn den Compiler die Rechtschreibung nicht interessiert, sollte man sie nicht vernachlässigen)

ridom 31. Aug 2010 17:57

AW: Delphi Schulaufgaben
 
Sry wegen dem Ergebnis xD ehem joa du wie gesagt steh immoment ziemlich auf dem Schlauch

ehm mit dieser methode

Delphi-Quellcode:
begin
zeichen:= edit1.text;
  for i:= 0 to 0 do
    begin
      ergebniss:=' ';
        memo1.Lines.Add(ergebniss);
        for j:= 7 downto 3  do
          begin
            ergebniss:=ergebniss + zeichen ;
            memo1.Lines.Add(ergebniss);
          end;
    end;

end;
bekomm ich das hier raus

x
xx
xxx
xxxx
xxxxx

blackfin 31. Aug 2010 17:59

AW: Delphi Schulaufgaben
 
Lies mal, was dir geraten wurde, du brauchst zwei innere Schleifen.


Zitat:

auch wenn den Compiler die Rechtschreibung nicht interessiert
DAS wäre doch mal ein Killerfeature für Delphi XE2! :D
Dann liesse sich allerdings kein einziges Programm mehr kompilieren...(Compiler error. unknown language: 'TMyKunde')

mkinzler 31. Aug 2010 18:01

AW: Delphi Schulaufgaben
 
Es fehlt auch die 1. innere Schleife (Leerzeichen) :zwinker:

Namenloser 31. Aug 2010 18:13

AW: Delphi Schulaufgaben
 
Die Schleife
Delphi-Quellcode:
for i:= 0 to 0 do
wird eh nur einmal durchlaufen (von 0 bis 0), also kannst du sie auch weglassen.

Wie gesagt, mit jeder Zeile werden es 2 X mehr. Ergo muss die Obergrenze für die innere Schleife mit jedem Durchgang um 2 erhöht werden. Überlege dir die Abhängigkeit zwischen der Baumbreite und dem Zeilenindex. Du kannst Variablen als Schleifen-Begrenzungen verwenden.

Das sind eigentlich alle Tipps, die ich dir geben kann, ohne die Lösung vorwegzunehmen, was wir hier im Forum selbstverständlich nicht machen. Ich bin aber sicher, dass du mit etwas Nachdenken die Lösung auch selbst herausfindest... und wenn nicht, schlaf mal eine Nacht drüber und probier es morgen noch mal.

ridom 31. Aug 2010 18:24

AW: Delphi Schulaufgaben
 
-.- Joa probier es ja zu beherzigen aber iwie bin ich immer noch auf dem falschen Dampfer

Also habe mir das jetzt so gedacht an dem Bsp von mkinzler

Code:
Äußere Schleife sagt wie oft die inneren durchlaufen sollen
     1.Innere Schleife sagt wie oft das Leerzeichen gezählt wird
      >>> Leerzeichen wird ausgegeben
     1.Innere schleife ende
     
     2.Innere Anzahl wie oft das Zeichen gezählt wird
      >>> Zeichen wird ausgegeben
     2.Schleife ende
Äußere Schleife Ende
Hoffe das ich das jetzt wenigstens verstanden habe

Und danke schonmal das ihr soviel Geduld aufbringt :) hatte leider eine lange Pause im programmieren

mkinzler 31. Aug 2010 18:33

AW: Delphi Schulaufgaben
 
Ja. Wobei die Anzahlen ja in Beziehung stehen

ridom 31. Aug 2010 20:28

AW: Delphi Schulaufgaben
 
So habe mal ganz lange nachgedacht und bin zum Entschluss gekommen brauche nur eine Schleife

Code:
var i, hoehe: integer;
    Leerzeichen, Zeile, zeichen: string[100];
begin
  zeichen:= edit1.Text;
  hoehe:= 7;
  for i:=hoehe downto 1 do
    begin
        Leerzeichen := stringofchar (' ', i-1);
        zeile := zeile + zeichen;
        memo1.Lines.Add(Leerzeichen + zeile)
    end;
end;
und Bums es hat funktioniert nur den Baumstamm habe ich nicht hinbekommen also der Baum sieht immoment so aus

Code:
   x
  xxx
 xxxxx
xxxxxxx
ok eher eine Pyramide :wink: aber ist denk ich mal Grundsätzlich richtig

Vielen Dank nochmal für eure Hilfe =)

Luckie 31. Aug 2010 20:31

AW: Delphi Schulaufgaben
 
Zitat:

Zitat von ridom (Beitrag 1046485)
nur den Baumstamm habe ich nicht hinbekommen

Was hindert dich daran den Stamm außerhalb der Schleife zu zeichnen?

ridom 31. Aug 2010 20:34

AW: Delphi Schulaufgaben
 
Stimmt O.o ach man manchmal siet man den Wald vor lauter Bäumen nicht xD


Edit: ehm kann ich das thema iwie selbst schließen falls nicht könnte das ein Mod für mich tun =) und danke noch einmal für eure hilfe


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz