• ベストアンサー

課題なんですが・・・

プログラムが書いてあるため非常に長文です。 お許しください。 いま、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(); }

質問者が選んだベストアンサー

  • ベストアンサー
  • mikaemi
  • ベストアンサー率50% (33/65)
回答No.12

> かなり高度なものだと思うのですが・・・ まったく通常レベルのものだと思いますけど。。。^^; > 質問欄にある形式(構文)のみで組むことは出来ませんか? 組むことはできるでしょうね^^ 関数呼び出しもダメ、if/while/for だけしか使うな、とか無意味、というより害があると思いますよ(笑) でもまあ、課題をクリアして、学校を信じてがんばってください。

tatsunami
質問者

お礼

ありがとうございます。 そうですね、学校、先生を信じて頑張ってみます。

その他の回答 (11)

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

方眼紙を用意して、大きさが2の場合、3の場合…の図形を手書きしてみては? 手計算の方法が分からないものは、プログラムで書きようが無いです。

tatsunami
質問者

お礼

ご回答ありがとうございます。 そうですね。まずは紙に起こすことからはじめてみます。

関連するQ&A