アプリ版:「スタンプのみでお礼する」機能のリリースについて

プログラムが書いてあるため非常に長文です。
お許しください。
いま、C++でのプログラミング課題が出ているのですが、
正方形の中抜きは出来たのですが、三角形・逆三角形の中抜きが作れません・・・。
もちろん、宿題・課題の丸投げは禁止されているのは分かっています。
しかし、一向に進まないのでなにかヒントだけでも(できたら答えも・・・というのは冗談です)教えていただけないでしょうか。
ちなみに問題は、入力数分の縦×横の図形を描くプログラムを組む。
というものです。

#include <stdio.h>
void main (void)
{
/*変数の宣言*/
int cnt1, cnt2,n;

/*数字の入力*/
do
{
printf("数字2~19を入力してください:");
scanf("%d",&n);
if(n<2 || n>19)
{
printf("入力エラーです!!\nもう一度");
}
}while(n<2 || n>19);


/*正方形の作成*/
printf("\n正方形\n");

for(cnt1=0;cnt1<n;cnt1++)
{
for(cnt2=1;cnt2<=n;cnt2++)
{
printf("*");
}
printf("\n");
}

  printf("\n三角形\n");

for(cnt1=1;cnt1<=n;cnt1++)
{
for(cnt2=0;cnt2<cnt1;cnt2++)
{
printf("*");
}
printf("\n");
}

printf("\n逆三角形\n");

for(cnt1=1;cnt1<=n;cnt1++)
{
for(cnt2=n;cnt2>=cnt1;cnt2--)
{
printf("*");
}
printf("\n");
}

printf("\n三角旗\n");

for(cnt1=1;cnt1<=n;cnt1++)
{
for(cnt2=0;cnt2<cnt1;cnt2++)
{
printf("*");
}
printf("\n");
}
for(cnt1=n-1;cnt1>=0;cnt1--)
{
for(cnt2=0;cnt2<cnt1;cnt2++)
{
printf("*");
}
printf("\n");
}


printf("\nダイヤ形\n");

for(cnt1=1;cnt1<=n;cnt1++)
{
for(cnt2=1;cnt2<=n*2;cnt2++)
{
if(cnt2<=n-cnt1 || cnt2>=n+cnt1)
{
printf(" ");
}
else
{
printf("*");
}
}
printf("\n");
}
for(cnt1=n-1;cnt1>0;cnt1--)
{
for(cnt2=1;cnt2<=n*2;cnt2++)
{
if(cnt2<=n-cnt1 || cnt2>=n+cnt1)
{
printf(" ");
}
else
{
printf("*");
}
}
printf("\n");
}

printf("\n中抜き正方形\n");

for(cnt1=1;cnt1<=n;cnt1++)
{
if(cnt1==1 || cnt1==n)
{
for(cnt2=1;cnt2<=n;cnt2++)
{
printf("*");
}

}
else for(cnt2=1;cnt2<=n;cnt2++)
{
if(cnt2==1 || cnt2==n)
{
printf("*");
}
else
{
printf(" ");
}
}


printf("\n");
}
rewind(stdin);
getchar();
}

A 回答 (12件中11~12件)

中抜き三角形の考え方。


(1)Y方向ループの始点と終点は、すべて"*"で出力する。
(2)それ以外は、X方向ループの始点と終点だけ"*"でそれ以外は" "を書く。
中抜き四角形とそんなに違わないと思いますが。

この回答への補足

ご回答ありがとうございます。

頭では理解できてるんですよね。
でもそのifやwhile、for文が考え付かないんですよ。
もう少し考えてみますね。
それでもだめでしたらまたお願いします。

補足日時:2007/09/08 23:25
    • good
    • 0

方眼紙を用意して、大きさが2の場合、3の場合…の図形を手書きしてみては?


手計算の方法が分からないものは、プログラムで書きようが無いです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

そうですね。まずは紙に起こすことからはじめてみます。

お礼日時:2007/09/08 23:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!