- ベストアンサー
visualC++で図形を作る方法
- visualC++を使って、「工」という文字の図形を作る方法について教えてください。
- 上線の長さ、下線の長さ、縦線の長さ、太さを指定すると、「工」という文字の図形を生成するプログラムをvisualC++で作成したいです。
- デバッグしたときに「*」が無限に現れる問題が発生しています。どのように修正すれば良いでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
下記のようにすれば、いいでしょう。どこが変わっているかよく見よう。 /* 工の字を*で書く */ #include <stdio.h> void main() { int a,b,c,d,e,f,g,h; printf("上線の長さは?"); scanf("%d", &a); printf("下線の長さは?"); scanf("%d", &b); printf("縦線の長さは?"); scanf("%d", &c); printf("太さは?"); scanf("%d", &d); for(e=1; e<=d; e++){ printf(" "); for(h=1;h<=a; h++){ printf("*"); } printf("\n"); } for(f=1;f<=c; f++){ for(h=1;h<=a/2; h++){ printf(" "); } for(h=1;h<=d; h++) { printf("*"); } printf("\n"); } for(g=1; g<=d; g++){ for(h=1; h<=b; h++){ printf("*"); } printf("\n"); } } 警告が4つ出るが、それはVCのMicrosoft拡張で、安全のためscanfの替わりにscanf_sを使った方がいいといっているので、scanfを使う限り仕方が無いような。この警告は無視しても動作には支障が無いでしょう。
その他の回答 (1)
- edomin7777
- ベストアンサー率40% (711/1750)
とりあえず、無限ループを抜けるには、 ×for(h=1;h<=d; e++) ○for(h=1;h<=d; h++) に変更します。 あとは、出力されるものを修正しましょう。
お礼
「h」を「e」としてたんですね・・・見落としました・・・。 どうもありがとうございます。 出力されるものなんですが・・・ 「c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(306) : 'scanf' の宣言を確認してください。」っていう警告文章が4つ出てきます・・・。 いったい何がおかしいのでしょうか・・・? すいません、質問だらけで・・・。
お礼
どうもありがとうございます。 横×縦では、無く、縦×横の順番で打ち込んだり、それにあわせて記号も変化させたりするんですね。 とりあえず、なんとなくって感じなので、この後もよく見比べさせていただきます。 解答していただいて本当にありがとうございます。