• 締切済み

c++ で *の逆三角旗を作りたいです

普通の三角旗はできましたが逆三角旗が分かりません 例えば3と入力したら * ** *** ** * こんな感じで出力させたいのですが考え方が分かりません 普通の方のコードはこんな感じです int i, j; cin>>num; for (i = 1;i <= num;++i) { for (j=1;j<=i;j++) { cout << "*"; } cout << endl; } for (i = 1;i <= num-1 ;i++) { for (j=1;j<=num-i;j++) { cout << "*"; } cout << endl; } cout << endl;

みんなの回答

  • watanabe04
  • ベストアンサー率18% (295/1598)
回答No.2

#include <iostream> using namespace std; int main(){ int num,i,j; cin >> num; for (i = 1;i <= num;++i) { for (j=1;j<=num-i;j++) { cout << " "; } for (;j<=num;j++) { cout << "*"; } cout << endl; } for (i = 2;i <= num ;i++) { for (j=1;j<=i-1;j++) { cout << " "; } for (;j<=num;j++) { cout << "*"; } cout << endl; } } こんなところかな

OKLmgoggog
質問者

補足

for (int i = 0;i < num;++i) { for (int j=0;j<num-i-1;j++) { cout << " "; } for (int j = 0;j <i+1;j++) { cout << "*"; } cout << endl; } for (int i = 0;i < num-1;++i) { for (int j = 0;j < i + 1;++j) { cout << " "; } for (int j = 0;j < num - i - 1;++j) { cout << "*"; } cout << endl; } よくよく考えたらできました。。。 回答してくれた方々ありがとうございました。

  • _kappe_
  • ベストアンサー率68% (1583/2308)
回答No.1

cout << " ";で空白(スペース)を出力できることは分かりますか。 あとは、各行で空白を何個、*を何個出力すればいいのかを計算すればいいだけです。 numが3のときを例にすると 1行目は空白を2個、*を1個 2行目は空白を1個、*を2個 3行目は空白を0個、*を3個 以下略 なお、空白1個と*1個が同じ幅に見えるフォントを使ってください。そうでないと表示が崩れます。

関連するQ&A

専門家に質問してみよう