前提・実現したいこと
C言語にてクリスマスの気をターミナルに出力するコードを書いています。
scanfで木の高さを受け取りそれをfor loop にてツリーを作ります。
幹の高さは常に3です(3つの*が縦に並ぶ)。
またここでの木の高さは木の三角の形から幹までの長さです。
発生している問題・エラーメッセージ
上の部分のピラミッドのところは完成しましたが 木の幹を真ん中に持ってくるのに苦戦しています。
該当のソースコード
c言語
1 2#include <stdio.h> 3int main(){ 4int i,j,k; 5int num; 6 7 8 printf("木の高さは?"); 9 scanf("%d",&num); 10 int topShape = num -3; 11 for(i=0;i<topShape;i++){ 12 for(j=topShape-i-1;j>0;j--){ 13 printf(" "); 14 } 15 for(k=0;k<i*2+1;k++){ 16 printf("*"); 17 } 18 printf("\n"); 19 } 20 for (int i = 0; i < 3; i++) { 21 for (int j = 0; j < 15; j++) { 22 // 幹を書く 23 char c = ' '; 24 if (j == topShape*2 -1) { 25 c = '*'; 26 //printf("%d",j); 27 } 28 printf("%c", c); 29 } 30 printf("\n"); 31 } 32 return 0; 33}
試したこと
n段目の真ん中の位置が(n*2)ー1で求められるためそこのみ*を出力してそれ以外は空の出力にしようとしましたがどうしてもずれます。
補足情報(FW/ツールのバージョンなど)
gcc 9.3 ubuntu1~20.04.
回答2件
あなたの回答
tips
プレビュー