プログラムが書いてあるため非常に長文です。
お許しください。
いま、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();
}
No.2
- 回答日時:
中抜き三角形の考え方。
(1)Y方向ループの始点と終点は、すべて"*"で出力する。
(2)それ以外は、X方向ループの始点と終点だけ"*"でそれ以外は" "を書く。
中抜き四角形とそんなに違わないと思いますが。
この回答への補足
ご回答ありがとうございます。
頭では理解できてるんですよね。
でもそのifやwhile、for文が考え付かないんですよ。
もう少し考えてみますね。
それでもだめでしたらまたお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# ポインタの型変換、どうやるんでしたっけ? 2 2022/03/28 11:00
- Visual Basic(VBA) 配列の勉強をしています。使用する変数の意味、検索条件の書き方が難しいです。 2 2022/09/15 14:06
- その他(プログラミング・Web制作) atcoder python コードへの助言 2 2022/08/12 15:31
- Visual Basic(VBA) Dateserialで データ抽出 2 2022/06/26 21:07
- C言語・C++・C# LU分解法のピボッティングについて(C言語/gcc-9) 3 2022/07/11 23:10
- Visual Basic(VBA) VBA Bookの表示、非表示 1 2022/09/16 20:44
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「指定されたキャストは有効で...
-
#define _CRT_SECURE_NO_WARNIN...
-
整数データの配列から同じ値の...
-
C言語での引数の省略方法
-
次のプログラムを教えてくださ...
-
C言語での奇数の和
-
複数桁10進数の*桁目だけを抽出...
-
ゴールドバッハの予想のプログラム
-
c言語の配列を使ってサイコロを...
-
C言語 エラーの原因がわからな...
-
VB6でAddressOfを使った良いサ...
-
実数の整数部,小数部の取得
-
gccで64ビット整数
-
acceptをalarmでタイムアウトさ...
-
【C++】関数ポインタの使い方
-
シグマ公式・・・C言語
-
「{ } で囲むだけ」は正しい?
-
(int *)の意味
-
へんな現象
-
アスタリスクで正方形
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語での引数の省略方法
-
#define _CRT_SECURE_NO_WARNIN...
-
「指定されたキャストは有効で...
-
C言語 配列と関数の練習問題
-
複数桁10進数の*桁目だけを抽出...
-
(int *)の意味
-
if と配列の組み合わせ
-
ラップ関数とはどんなものですか?
-
卒業研究でよく分からないとこ...
-
【C++】関数ポインタの使い方
-
c言語
-
足して100になるような乱数のア...
-
C言語初心者です、、、お助けく...
-
数字列を3桁ごとにカンマで区切...
-
C言語 エラーの原因がわからな...
-
実数の整数部,小数部の取得
-
課題でつまってます・・・
-
商と剰余を同時に求める(C言語)
-
C言語の配列をC++のvectorに高...
-
std::set<int> で、ある値が何...
おすすめ情報