初めまして。さっそくですが質問をさせていただきます。
[1.1] 自分が今行いたい事は何か
明解C++の演習問題3-5を解いていたのですが、分からなかったので質問します。
[1.2] どのように取り組んだか(プログラムコードがある場合記載)
#include <iostream>
using namespace std;
int main()
{
int a;
cout << "何個☆を表示しますか:";
cin >> a;
int i = 0;
while(i < a){
cout << "☆";
i++;
}
cout << "\n";
return 0;
}
[1.4] 今何がわからないのか、知りたいのか
☆を表示するまではできたのですが、1未満の数字を入れて改行文字を出力しないようにしたいのですが、全く分かりません。
C++の知識は全くありません。
自分が考えたところまでは、1回もwhile文が実行されなければ改行はされないかなと思い、while文の前にif文とかをいれてみましたがだめでした。
while文で改行文字を出力しない方法
Re:while文で改行文字を出力しない方法
cout << "\n";
↑これが改行を出力している部分である
ということが分かっていないように見えてしまいました。
"1未満の数字を入れて改行文字を出力しないようにしたい"
を言葉通りに捉えれば、lbfuvabさんのおっしゃるように、
cout << "\n";
を
if(!(a < 1)) cout << "\n";
となるんでしょうかね。
↑これが改行を出力している部分である
ということが分かっていないように見えてしまいました。
"1未満の数字を入れて改行文字を出力しないようにしたい"
を言葉通りに捉えれば、lbfuvabさんのおっしゃるように、
cout << "\n";
を
if(!(a < 1)) cout << "\n";
となるんでしょうかね。
Re:while文で改行文字を出力しない方法
入力された時点でaに関しての制限(正数以外ダメ!)等を記述するといいかもです。
aが1以下ならそっけなく終了。とすれば今回はいいような気がします。
課題に特に縛りがなければ今回はfor文を使うべきだと思います(ループ内でしか使わない
変数はループ内で宣言←スコープ制限。インクリメントの明示。などの理由で)。
std namespace を使うのであらば改行はstd::endlを使うほうがそろっていて良いです。
aよりもnumStarのほうがいい名前で、intよりもunsigned intのほうがふさわしいです。
++演算子は常に前置で使うようにしたほうがいいです。
質問やつっこみがあったら教えてください。
あと、補足の内容は無視してくださってもかまいません。
(プレタグ内のタブストップってどうやって変えるんでしょう?変えられないのかな?)
aが1以下ならそっけなく終了。とすれば今回はいいような気がします。
#include <iostream> using namespace std; int main() { cout << "何個☆を表示しますか:"; int a; cin >> a; // a < 1 なら即終了 if(a < 1) { return -1; } // 出力 for(int i = 0; i < a; ++ i) { cout << "☆"; } // 改行 cout << endl; return 0; }補足:
課題に特に縛りがなければ今回はfor文を使うべきだと思います(ループ内でしか使わない
変数はループ内で宣言←スコープ制限。インクリメントの明示。などの理由で)。
std namespace を使うのであらば改行はstd::endlを使うほうがそろっていて良いです。
aよりもnumStarのほうがいい名前で、intよりもunsigned intのほうがふさわしいです。
++演算子は常に前置で使うようにしたほうがいいです。
質問やつっこみがあったら教えてください。
あと、補足の内容は無視してくださってもかまいません。
(プレタグ内のタブストップってどうやって変えるんでしょう?変えられないのかな?)
Re:while文で改行文字を出力しない方法
皆様ありがとうございます。
実行できました。
下の部分の
cout << "\n";
を何回かいじったのですが、実行結果が変わらなかったので関係ないと思いこんで上ばかり変えてました。。
TOMONORIさんの補足は、参考にさせていただきます。
まだ読み始めたばかりなので、全く分かりませんが・・・。
実行できました。
下の部分の
cout << "\n";
を何回かいじったのですが、実行結果が変わらなかったので関係ないと思いこんで上ばかり変えてました。。
TOMONORIさんの補足は、参考にさせていただきます。
まだ読み始めたばかりなので、全く分かりませんが・・・。