C Programmierung Tannenbaum?


17.01.2021, 12:27

Problem 1 gelöst :)

2 Antworten

So ganz klar ist mir noch nicht, was du vorhast, ich versuche trotzdem.

Frage 1: Vermutlich möchtest du erreichen, dass deine For-Schleife mehrmals, unterschiedlich lang, durchlaufen wird. So etwas geht beispielsweise so:

   int j=1;
   int b;
   char s[] = ".............................";
    for(b=1;b<7; b++){
      for( a=1; a < j; a++) {
      //setze an a-ter Stelle ein "*" ein
      printf(" %s\n", s);
      }
      //weitere Anweisungen
    j++;//erhöht die Lauflänge der inneren Schleife um 1
   }

Zu Frage 2: Vielleicht kannst du zunächst einen halben Baum schreiben (etwa nur die rechte Hälfte) und hast dann eine Idee, wie du die andere Hälfte hinbekommst.


MeluDeutsch 
Beitragsersteller
 17.01.2021, 12:52

Vielen vielen Dank, aber ich habe Frage 1 bereits gelöst :)

Frage 2:

Normalerweise wird es dann linksbündig ausgegeben ich möchte es aber zentriert haben, sodass es sich mit der Breite des Baumes ausgeht. Normalerweise löst man es so dass man eine gewisse Anzahl an Zeichen vorausgesetzt wird Zb. printf("%05c",zeichen); dann werden 5 Zeichen vorausgestzt sodass wenn das Wort welches in der Variable gespeichert wird nur 3 zeichen hat werden davor 2 Leerzeichen platziert. Und diese Voraussetzung sollte immer so groß wie die höhe des Baumes sein.

0

Ich kannte bis jetzt diese Möglichkeit mit "%05c" noch nicht, und weiß nicht auf Anhieb, wie man da am geschicktesten per Programmanweisung die 5 in eine andere Ganzzahl ändert... :-|

Mein Vorgehen daher: eine Füllzeichenkette in der benötigten (vorher errechneten) Maximallänge zu erstellen und dann indexweise zu überschreiben, da wo der Baum ist. Dann am schnellsten - wenn ihr es benutzen dürft - um die Zeile wieder in die ursprüngliche Füllzeichenkette zurückzuändern, mit strcpy siehe hier.

Mein Ansatz "rechte Hälfte" zielt darauf ab, dass man die rechte Hälfte zuerst generiert, und die Hälfte zeilenweise rückwärts davorsetzt.